1 pièce(s) jointe(s)
Optimisation Index SQL SERVER 2008 R2
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| SELECT sys.objects.name, CONVERT(int,(avg_total_user_cost * avg_user_impact * 0.01) * (user_seeks + user_scans)) AS Impact
, 'CREATE NONCLUSTERED INDEX ix_IndexName ON ' + sys.objects.name COLLATE DATABASE_DEFAULT + ' ( ' + IsNull(mid.equality_columns, '')
+ CASE WHEN mid.inequality_columns IS NULL THEN '' ELSE CASE WHEN mid.equality_columns IS NULL THEN '' ELSE ',' END
+ mid.inequality_columns END + ' ) ' + CASE WHEN mid.included_columns IS NULL THEN '' ELSE 'INCLUDE (' + mid.included_columns + ')' END
+ ';' AS CreateIndexStatement, mid.equality_columns, mid.inequality_columns, mid.included_columns
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS mid ON mig.index_handle = mid.index_handle AND mid.database_id = DB_ID()
INNER JOIN sys.objects WITH (nolock) ON mid.OBJECT_ID = sys.objects.OBJECT_ID
WHERE (migs.group_handle IN
(
SELECT TOP (500) group_handle
FROM sys.dm_db_missing_index_group_stats WITH (nolock)
ORDER BY (avg_total_user_cost * avg_user_impact) * (user_seeks + user_scans) DESC))
AND OBJECTPROPERTY(sys.objects.OBJECT_ID, 'isusertable')=1 |
J’obtiens le résultat suivant pour une de mes tables
http://www.developpez.net/forums/att...1&d=1327056034
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.