|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 9 ![]() |
Bonjour à tous,
J'ai des soucis de lenteur dans une de mes applications sous SQL server 2008 R2. J'ai exécuté la requête suivante pour trouver les index qui manquent : Code :
![]() La question que je pose est : Est ce que je doit créer les 3 index pour la même table ou le fait de créer le premier diminuera l'impact des 2 autres ? Par ailleurs, à partir de quel impact peut-on considérer qu'un index est vraiment nécessaire? La requête me ramène en fait 540 lignes de création d'index avec des impacts allant de 1 à 800.000 Merci d'avance pour vos réponses. |
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() David BAFFALEUFInscription : février 2008 Messages : 612 ![]() |
par exemple (id,status) include (code)
Mais avant il faudrait regarder la quantité d'updates sur l'index clustered de cette table (sys.dm_db_index_usage_stats, colonne user_updates) pour évaluer le coût de mise à jour.
__________________
David B. |
|
10
|
|
|
#3 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 9 ![]() |
Merci David pour la réponse.
Il y a 2 autres index sur la table en question. La colonne user_updates de la table sys.dm_db_index_usage_stats donne 0 pour les 2 index. Sinon à partir de quel impact il faut créer les index ? Est ce que je doit créer les 540 index conseillé par ma première requête ou prendre juste les impacts supérieur à un seuil (1000, 10.000 !!!!) ? Merci |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() David BAFFALEUFInscription : février 2008 Messages : 612 ![]() |
Nan il ne faut pas faire tout ce que les assistants proposent
La pertinence des informations de ces vues dépend de la date de dernier restart de l'instance. Plus de restart est éloigné dans le temps et plus les informations sont pertinentes. L'impact est un pourcentage donc il ne peut pas dépasser 100. C'est la valeur estimée de réduction du coût moyen des requêtes pour lesquelles l'index est préconisé. Donc un impact proche de 100% indique que le gain est très élevé. Sa valeur brute sera proportionnelle au coût de la requête, c'est la raison pour laquelle on utilise ce coefficient multiplicateur (coût * impact) dans l'order by. Il faut trouver le couple coût * gain le plus élevé, et regarder à chaque fois si des mises à jour ont été effectuées sur la table ou l'index cluster. Préférer ceux pour lesquels on observe le moins de mises à jour, mais encore une fois tout dépend de la date de démarrage !
__________________
David B. |
|
00
|
Copyright © 2000-2012 - www.developpez.com