2010-03-19 2 views
0

J'ai sélectionné, insérer, mettre à jour et supprimer une requête.Quelle méthode est la meilleure méthode pour la vitesse? dans SQL Server, procédure stockée

Si je dois écrire toutes les requêtes dans la même procédure stockée qui est bonne pour les performances ou dois-je écrire toutes les requêtes dans des procédures stockées distinctes?

+0

Si toutes les opérations sont liées, il est préférable de les conserver dans la même transaction. Mais je ne connais aucun avantage de performance. –

+2

@OMG - moins de trps dans la base de données? La seule chose à laquelle je puisse penser. – Justin

+0

@Kragen: Bon point - je pensais à la performance de la requête elle-même. C'est ce que je reçois pour commenter Avant de café (tm) –

Répondre

3

Pour faciliter l'entretien, j'irais faire des démarches séparées.

La vitesse ne sera pas un problème si le même code est dans un proc ou plusieurs procs - tant que le code est le même, il se comportera de la même manière dans un proc ou plusieurs.

La meilleure méthode pour obtenir une bonne vitesse est d'écrire une requête efficace. Exécutez-le et passez en revue le plan d'exécution. puis affinez la requête si nécessaire.

Vous trouverez beaucoup de bonnes informations sur l'optimisation des requêtes et l'indexation sur ce site (il suffit de le rechercher).

3

Si elle est quelque chose comme, et tous les paramètres sont à gérer:

BEGIN TRANSACTION 
    INSERT 
    .... 
    UPDATE 
    ... 
    DELETE 
COMMIT 

oui, en un seul éliminera le peu de frais généraux de multiples appels et de garder la logique ensemble comme une unité.

si elle est:

@ParamType char(1) --given parameter "I"nsert, "U"pdate, "D"elete 

IF @ParamType='I' 
    INSERT 
ELSE IF @ParamType='U' 
    UPDATE 
ELSE 
    DELETE 

les diviser en procédures distinctes, ils ne font aucun sens à combiner ensemble.

+1

@ AjmeraInfo, ma réponse essaie d'aborder QUAND les combiner et quand ne pas le faire. Parfois, il est bon de les combiner, parfois non. Je dis que si elles sont liées à une transaction, combinez-les, si elles ne sont pas liées, ne les combinez pas. Votre question ne donne aucun indice quant à leur lien ou non et est très vague. Si vous modifiez votre question et fournissez plus de détails, je serais heureux de réviser ma réponse en fonction de toute nouvelle information que vous fournissez. –

Questions connexes