SELECT

mig.index_group_handle, mid.index_handle,

CONVERT (decimal (28,1),

migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)

) AS improvement_measure,

'create index IDX_' + OBJECT_NAME(object_id,database_id) + '_Missing_' +

replace(replace(replace(replace(ISNULL (mid.equality_columns,'') + '_' +

ISNULL (mid.inequality_columns, ''), ',', '_'), ' ', ''), '[', ''), ']', '') +

' on [' + OBJECT_NAME(object_id,database_id) + '] (' +  ISNULL (mid.equality_columns,'')

+ CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END

+ ISNULL (mid.inequality_columns, '')

+ ')' + isnull(' Include (' + included_columns + ')','') + ' WITH (ONLINE=ON)' AS create_index_statement,

migs.*, mid.database_id, mid.[object_id]

FROM sys.dm_db_missing_index_groups mig

INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle

INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle

WHERE CONVERT (decimal (28,1), migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)) > 10

ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC

05-08 08:28