L'exécution de Microsoft SQL Server Profiler de temps en temps, il me suggère avec un tas de nouveaux index et statistiques à créer ("... 97% d'amélioration estimée ...").
D'après ma compréhension, chaque index ajouté peut rendre une SELECT
requête SQL plus rapide mais aussi une requête UPDATE
ou INSERT
plus lente car les index doivent être ajustés.
Ce que je me demande, c'est quand ai-je "trop" d'index / statistiques?
Il n'y a peut-être pas de réponse claire à ce sujet, mais une règle empirique.
sql-server
performance
index
index-tuning
Uwe Keim
la source
la source
UPDATE
et lesINSERT
instructions trop lentes.Réponses:
Votre profil de charge est le facteur le plus important pour répondre à cette question.
Si votre charge est intensive en lecture, vous souhaitez que les index satisfassent vos requêtes les plus lourdes ou les plus fréquentes.
Si votre charge est gourmande en écriture, indexez soigneusement. Index pour satisfaire une demande de mise à jour, par exemple, ainsi que vos un ou deux SELECT les plus chers.
Si votre charge est de type OLAP, indexez avec parcimonie car vous allez quand même analyser les tables cibles.
Comment savez-vous que vous avez trop d'index?
Lorsque vous pouvez voir que certains d'entre eux ne sont utilisés par aucune requête.
Une fréquence SUPPRIMER, montre UPDATE ou INSERT un plan de requête qui implique plusieurs changements d'indice coûteux (soit un indice nonclustered d'insertion , mise à jour ou supprimer ). Utilisez votre jugement pour déterminer si la pénalité sur ces instructions DML vaut le gain que vous obtenez des index qui doivent être mis à jour.
la source
Si vous avez des index qui sont maintenus mais ne sont jamais utilisés (ou sont rarement utilisés), vous devez alors utiliser de nombreux index. Si tous vos index sont utilisés pour améliorer les performances des utilisateurs, vous n'en avez pas trop.
la source