2010-09-17 6 views
12

Je sais comment écrire SQL requêtes et peut obtenir les résultats dont j'ai besoin. Mais parfois mes requêtes sont lentes et je ne comprends pas pourquoi.Comment puis-je apprendre à optimiser les requêtes SQL

Quelles sont les bonnes ressources pour apprendre à écrire des requêtes efficaces et pour optimiser les requêtes que j'ai déjà écrites?

+1

Qu'est-ce qui est argumentatif à ce sujet? –

+2

Cela ne devrait-il pas être Community wiki, comme des questions comme "Quel livre est recomment pour C?" – fuz

+0

êtes-vous principalement intéressé par l'optimisation des requêtes SQLServer ou l'optimisation pour d'autres SGBD? Les techniques ont tendance à varier entre les dialectes de SQL. –

Répondre

20

Je dirais que les choses principales sont:

  • Comprendre la nature basé sur un ensemble de SQL en lisant des livres de la plate-forme neutre tel que Celko's; cela vous aidera à éviter les erreurs de débutant, comme l'utilisation de curseurs (ou d'autres approches itératives) lorsqu'elles ne sont pas nécessaires.
  • Apprenez les bases de la normalisation et quand dénormaliser; les requêtes efficaces commencent par des données bien organisées.
  • Comprendre où les index peuvent être utiles et où ils ne peuvent pas; Par exemple, saisissez comment la cardinalité de vos données affecte l'efficacité de l'index, quelles sont les requêtes SARGable et quand utiliser des index multi-colonnes.
  • Apprenez à utiliser EXPLAIN PLAN ou son équivalent pour votre plate-forme; En observant comment votre requête est compilée et les ressources qu'elle consomme, vous comprendrez mieux les goulots d'étranglement.
  • Apprendre les méthodes spécifiques à la plate-forme telles que les vues indexées/matérialisées, l'indexation de texte intégral et les méthodes de pagination et de gestion des données hiérarchiques.
+0

+1 qui le couvre assez bien. –

+0

Pour ce qui est des index, j'ajouterais ce qu'est un index de couverture. Les index fonctionnels et filtrés/partiels peuvent également être utiles à connaître, bien qu'ils soient plutôt obscurs et peu pris en charge. –

0

utilisez les index où les tables peuvent en utiliser un, et exécutez également Database Tuning Advisor sur une requête si vous avez SQL Server.

2
+0

Chaque fournisseur de base de données majeur a un équivalent de ce livre, et oui réglage des performances est un sujet complexe mieux appris d'un de ces gros gros livres. Le réglage des performances et des performances est très spécifique à ce qui peut être dangereux pour SQl Server dans Oracle. – HLGEM

+0

D'accord avec HLGEM, j'hésiterais à recommander une plate-forme et un livre spécifique à la version comme ceci lorsqu'aucune plate-forme de base de données n'a été spécifiée. – RedFilter

6

Cela fait longtemps que je devais l'utiliser, mais j'ai trouvé SQL Tuning être très utile à un emploi que j'ai eu il y a quelques années.