欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-01-03 15:44:38
select migs.avg_total_user_cost*(migs.avg_user_impact/ 100.0) *(migs.user_see...
select
 
 migs.avg_total_user_cost*(migs.avg_user_impact/ 100.0) *(migs.user_seeks + migs.user_scans) asimprovement_measure,
 
 'create index[missing_index_' + convert(varchar, mig.index_group_handle) + '_' + 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