2008-12-30 6 views
1

Lors de l'utilisation du dernier pilote jdbc Microsoft pour SQL Server 2005/2008, comment les instructions préparées, les vues et les procédures stockées se comparent-elles en termes de performances?Lors de l'utilisation du dernier pilote jdbc pour SQL Server 2005/2008, comment les instructions préparées, les vues et les procédures stockées se comparent-elles en termes de performances?

Si j'ai une déclaration ancienne plaine select avec une dynamique où les clauses vais-je voir les avantages de se déplacer de SQL directement dans une déclaration préparée à une vue ou une procédure stockée même?

Pour être plus précis, ce quelque chose comme ceci:

select foo.name, bar.name, baz.name, belch.burp 
from foo 
inner join bar on foo.id=bar.fooID 
inner join baz on bar.id=baz.barID 
inner join belch on baz.id = belch.bazID 
where foo.name like '%<USERINPUT>%' and bar.name like '%<USERINPUT>%' 

Répondre

0

dépend de la sql et votre application. Je ne crois pas qu'il y ait une réponse générale, et cela ne dépend probablement pas du conducteur. Si vous avez le choix entre écrire une requête qui ramène beaucoup de données au niveau intermédiaire pour effectuer une opération que la base de données peut facilement faire, je vous recommande de laisser la base de données faire le calcul et simplement retourner le résultat .

2

Vous n'êtes pas susceptibles de voir une différence significative de la performance en raison des plans d'exécution mises en cache pour SPs, comme les plans d'exécution sont également mises en cache dans SQL Server 2005 et jusqu'à même pour SQL ad hoc.

Dans le cas où le paramètre renifler peut nuire à la performance en raison des estimations de cardinalité erronées pour certaines valeurs des paramètres, vous pouvez utiliser des indicateurs recompiler.

Les avantages des vues et des procédures stockées vont être dans les domaines de la sécurité et de l'entretien, où les avantages sont probablement trop nombreux pour couvrir de manière exhaustive ici, mais comprennent les capacités à:

Limiter les données puissent être lues à partir SELECT instructions sans avoir à affecter des autorisations de colonne individuelles sur les tables sous-jacentes.

Réutilisez les SP paramétrés à partir d'autres codes SQL et de plusieurs emplacements dans l'application.

Instrument, connectez-vous, le profil et régler les applications comme SPs de composants d'interface de base de données nommée de votre système sans affecter ou redéployer le code d'application. Refaire la base de données sans affecter ou redéployer le code de l'application.

Fournir une couche d'abstraction et contrat d'interface avec la base de données qui donne une bonne visibilité sur les services de base de données requis et fournis par le système, pouvant inclure la génération automatique de métadonnées sur l'interface. tests, et qui peut également être utilisé comme un point de démarcation pour la portabilité backend.

1

Vous ne serez jamais obtenir de bonnes performances sur une telle déclaration, peu importe quelle façon dont vous présentez comme une déclaration comme avec un caractère générique comme premier caractère signifie automatiquement les index ne sont pas utilisés pour ce domaine. Franchement, nous avons toujours insisté pour que nos utilisateurs tapent au moins le premier caractère à faire une recherche. Si vos données sont telles qu'elles ne connaîtront pas le premier caractère, vous avez probablement un problème de conception et de normalisation (stockage de plusieurs bits d'information dans un champ). Il n'y a pas de solution à ce problème de refonte de la base de données.