2010-01-26 4 views
7

Je pose cette question stackoverflow parce que son bon endroit pour demander ...Trucs et astuces sur l'optimisation des requêtes [SQL Server 2005]

Je sais que un sujet très vaste pour commencer, mais quelques petits qui peut être très pratique ...

Il pourrait être utile pour les jeunes développeurs comme moi à savoir sur l'optimisation des requêtes ..

Quelques Trucs et astuces à propos optimisation des requêtes dans SQL Server 2005 ..

Répondre

2

Basé sur les questions ici

  • priorité Évitez datatype (par exemple, toujours un peu comme pour les autres, y compris la durée de varchar etc.)

par exemple

...WHERE tinyintcol = @intvalue 
means a conversion of the column and invalidates an index 
...WHERE tinyintcol = @tinyintvalue 
  • Évitez les fonctions sur colonnes dans les clauses WHERE

par exemple

...WHERE DATEADD(day, 1, MyCol) > GETDATE() 
should be 
...WHERE MyCol > DATEADD(day, -1, GETDATE()) 
  • index Couvrant

  • GUIDs: pas d'index clusterisés

1

L'endroit le plus évident pour commencer si vous avez une requête lente est de s'assurer qu'il utilise un index.

+0

dans la gestion studio, lancez la commande ** set showplan_all on ** puis lancez votre requête. La requête ne sera pas exécutée, mais le plan d'exécution sera sauvegardé. Regardez dans cette sortie pour le mot * scan * c'est où un index n'est pas utilisé. –

1
  • Essayez de réduire le nombre total de jointures si possible
  • C nvisager les tailles de table utilisés dans la requête
  • Utilisez les index car ils sont vos amis
  • Faites attention aux types que vous utilisez en tant que clés (int int est une comparaison beaucoup plus facile que deux varchars)
  • Évitez d'utiliser ' comme » requêtes si possible tentent d'obtenir la valeur en utilisant une égalité première
1

pour les requêtes que je peux ajouter à gbn, recursive et smaclell les suivants:

  • essayer de minimiser les sous-requêtes, rejoint
  • éviter tout excessing verrouillages, les postes de contrôle d'économie
  • utilisation pragma pour définir la création de table temporaire en mémoire
  • utiliser pragma pour régler synchrones OFF
  • utiliser pragma pour désactiver les déclencheurs (si possible)
  • embed INSERT et DELETE requêtes dans les transactions
  • parfois UPDATE est plus lent pour plusieurs enregistrements que de les insérer à nouveau. Alors conseillé est de sélectionner, DELETE, que mettre à jour par programmation des enregistrements et réinsérez avec les clés existantes (attention aux CASCADE et TRIGGERS)
  • vérifier avec vos admins sys qui cache DB doit être sur
Questions connexes