SQL语句实现查询并自动创建Missing Index

SELECT migs.avg_total_user_cost(migs.avg_user_impact/ 100.0) (migs.user_seeks + migs.user_scans) ASimprovement_measure, 'CREATE INDEX[missingindex' + CONVERT(varchar, mig.index_grouphandle) + '' + CONVERT(varchar, mid.index_handle) +

SELECT

migs.avg_total_user_cost(migs.avg_user_impact/ 100.0) (migs.user_seeks + migs.user_scans) ASimprovement_measure,

'CREATE INDEX[missingindex' + CONVERT(varchar, mig.index_grouphandle) + '' + CONVERT(varchar, mid.index_handle)

  • '_' + LEFT(PARSENAME(mid.statement, 1), 32) + ']'

  • ' ON ' + mid.statement

  • ' (' + ISNULL(mid.equality_columns,'')

    • CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columnsIS NOT NULL THEN ',' ELSE '' END

    • ISNULL(mid.inequality_columns, '')

  • ')'

  • ISNULL(' INCLUDE (' + mid.included_columns+ ')', '') AScreate_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_statsmigs ON migs.group_handle= mig.index_group_handle

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

WHERE migs.avg_total_user_cost (migs.avg_user_impact /100.0) (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