Outils pour identifier les index nécessaires

8

Je veux créer les meilleurs index pour chaque table de ma base de données. Existe-t-il une requête ou un outil dans SQL Server pour vous aider dans ce processus?

mehdi lotfi
la source
1
Il existe des index suggérés mais ceux-ci sont très limités et devraient encore être évalués par quelqu'un qui sait ce qu'ils font. Vous avez une question spécifique sur l'indexation?
JNK
1
Y a-t-il une requête / table sur laquelle vous avez de mauvaises performances? Comme JNK l'a laissé entendre, vous ne devez vraiment ajouter des index que lorsque vous savez ce que vous faites (et le tester malgré tout). À moins que vous ayez des raisons de croire qu'une table a besoin d'un index (table énorme, requêtes lentes, un index cluster évident), vous ne devriez pas simplement essayer de les ajouter
Ben Brocka

Réponses:

10

Oui, il existe des outils, comme le conseiller de réglage du moteur de base de données. Il est livré avec SQL Server et fait des choses assez désagréables:

  • Il vous permet de ne considérer qu'une très petite charge de travail (même une seule requête). Ce qui suggérera alors des index qui peuvent aider cette petite charge de travail uniquement, sans égard pour le reste de la charge de travail (les index aident à accélérer certaines requêtes, mais ils peuvent en ralentir d'autres, en particulier insérer / mettre à jour / supprimer), sans parler du reste du cycle économique.
  • Il recommandera souvent des index redondants qui ne diffèrent que par une colonne de fin ou par une colonne incluse.
  • Il aime vraiment, vraiment, vraiment les colonnes incluses - je pense que cela peut être un fétiche.

L'approche appropriée pour l'optimisation d'index consiste à considérer l'ensemble de votre charge de travail sur un cycle commercial complet. Parfois, il vaut mieux se tourner vers des outils tiers que de réinventer la roue. DBSophic fait un produit gratuit appelé Qure Workload Analyzer qui, je pense, fait un bien meilleur travail que DTA - mais leur outil sous licence (Qure Workload Optimizer) est absolument phénoménal dans ce qu'il fait. L'année dernière, j'ai blogué sur le fonctionnement de l'outil lorsqu'il est intégré à SQL Sentry ).

Il existe également d'autres options, par exemple les index manquants sont signalés dans les DMV, et vous pouvez également découvrir les index dans lesquels ils sont écrits (afin qu'ils occupent de l'espace et affectent les opérations d'insertion / mise à jour / suppression) mais jamais (ou rarement ) utilisé par les requêtes des utilisateurs:

Mais ceux-ci doivent également être avertis que les DMV ne sont valides que depuis le dernier redémarrage de SQL Server et qu'ils ne couvriront pas nécessairement un cycle économique approprié (et par conséquent, il peut manquer des informations vitales

Aaron Bertrand
la source
7

L'outil dont vous parlez s'appelle le Database Engine Tuning Advisor (DTA pour faire court). Il peut prendre un certain nombre d'entrées et donner des recommandations sur des choses comme les index manquants. Il convient de noter, cependant, que ce ne sont que des suggestions et une attention particulière devrait être prise au lieu de suivre aveuglément les recommandations du DTA.

Lien pour le didacticiel DTA

Il convient également de noter qu'il existe des DMV intégrés pour collecter ce type d'informations:

Thomas Stringer
la source