优化添加索引

1.找到对应的sql语句,右键显示估计的执行计划

2.查看是否确实索引信息

3.缺少索引信息的话,右键查看详细的索引信息

4.按照sql server 提供的确实索引信息更改索引名称后执行到数据库

5.执行索引后检查是否还缺少索引信息

查找缺失索引的方法

SELECT TOP 100
database_name = db_name(details.database_id)
, schema_name = SCHEMA_NAME(tb.schema_id)
, object_name = tb.name
, dm_migs.avg_user_impact
, 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
      查询结果为缺失索引的表
      执行CREATE_INDEX语句可重建索引
      avg_estimated_impact字段值超过10000均可重建索引
文档更新时间: 2024-06-26 15:56   作者:Gaychou