SELECT TOP 10
database_name = DB_NAME(details.database_id) ,
schema_name = SCHEMA_NAME(tb.schema_id) ,
object_name = tb.name ,
avg_estimated_impact = dm_migs.avg_user_impact * ( dm_migs.user_seeks
+ dm_migs.user_scans ) ,
last_user_seek = dm_migs.last_user_seek ,
create_index = 'CREATE INDEX [IX_' + OBJECT_NAME(details.object_id,
details.database_id)
+ '_' + REPLACE(REPLACE(REPLACE(ISNULL(details.equality_columns, ''),
', ', '_'), '[', ''), ']', '')
+ CASE WHEN details.equality_columns IS NOT NULL
AND details.inequality_columns IS NOT NULL THEN '_'
ELSE ''
END + REPLACE(REPLACE(REPLACE(ISNULL(details.inequality_columns, ''),
', ', '_'), '[', ''), ']', '') + ']'
+ ' ON ' + details.statement + ' (' + ISNULL(details.equality_columns,
'')
+ CASE WHEN details.equality_columns IS NOT NULL
AND details.inequality_columns IS NOT NULL THEN ','
ELSE ''
END + ISNULL(details.inequality_columns, '') + ')'
+ ISNULL(' INCLUDE (' + details.included_columns + ')', '')
FROM sys.dm_db_missing_index_groups AS dm_mig WITH ( NOLOCK )
INNER JOIN sys.dm_db_missing_index_group_stats AS dm_migs WITH ( NOLOCK ) ON dm_migs.group_handle = dm_mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS details WITH ( NOLOCK ) ON dm_mig.index_handle = details.index_handle
INNER JOIN sys.tables AS tb WITH ( NOLOCK ) ON details.object_id = tb.object_id
WHERE details.database_id = DB_ID()
ORDER BY avg_estimated_impact DESC;
GO