sqlserver索引优化

/*
avg_total_user_cost:减少的用户查询的平均成本
avg_user_impact:户查询可能获得的平均百分比收益
user_scans:扫描次数
user_seeks:查找次数。
equality_columns: 哪个字段缺失了索引(where 后面的筛选字段)
included_columns:查询的涵盖列(简单来讲就是 select 后面的字段)。
*/
SELECT  avg_user_impact,
        avg_total_user_cost, 
        avg_total_user_cost * avg_user_impact * ( user_scans + user_seeks ) AS PossibleImprovement ,  
        last_user_seek ,  
        last_user_scan ,  
        [statement] AS [Object] ,  
        'CREATE INDEX [IDX_' + CONVERT(VARCHAR(32), GS.group_handle) + '_'  
        + CONVERT(VARCHAR(32), D.index_handle) + '_'  
        + REPLACE(REPLACE(REPLACE([STATEMENT], ']', ''), '[', ''), '.', '')  
        + ']' + ' ON ' + [statement] + ' (' + ISNULL(equality_columns, '')  
        + CASE WHEN equality_columns IS NOT NULL  
                    AND inequality_columns IS NOT NULL THEN ','  
               ELSE ''  
          END + ISNULL(inequality_columns, '') + ')' + ISNULL(' INCLUDE ('  
                                                              + included_columns  
                                                              + ')', '') AS Create_Index_Syntax  
FROM    sys.dm_db_missing_index_groups AS G  
        INNER JOIN sys.dm_db_missing_index_group_stats AS GS ON G.index_group_handle = GS.group_handle  
        INNER JOIN sys.dm_db_missing_index_details AS D ON G.index_handle = D.index_handle  
ORDER BY PossibleImprovement DESC 
SQL Server索引优化是提高数据库查询性能的关键环节,它涉及创建、管理和维护适当的索引,以减少数据访问时间。以下是SQL Server索引优化的一些关键方面: 1. **理解索引类型**: - **B-Tree索引(默认)**:数据按排序顺序存储,适用于范围查询和等值查询。 - **哈希索引**:用于等值查找,但不支持范围或排序操作,主要用于全文索引或唯一键。 - **Clustered索引**:决定了表的物理顺序,每个表只能有一个,选择主键作为clustered index通常最佳。 - **Non-Clustered索引**:独立于表的物理结构,可以有多个。 2. **创建索引策略**: - 为频繁查询的列创建索引。 - 避免在包含大量重复值的列上创建索引,因为它们效率低。 - 尽量使用覆盖索引,减少表扫描。 3. **考虑索引宽度**: - 索引列越少,查询效率越高,但过多列可能导致索引过大,增加磁盘空间占用。 4. **评估索引分布**: - 确保索引列上有均匀分布的数据,避免聚集簇状索引中的数据过于集中。 5. **使用统计信息**: - SQL Server使用统计信息来估计查询性能,定期更新统计信息以保持其准确。 6. **避免过度索引**: - 创建过多索引会消耗存储空间且查询解析复杂度增加,需权衡利弊。 7. **索引合并(Index Rebuild或Reorganize)**: - 定期执行以优化物理结构,提高查询性能。 8. **使用覆盖索引或非覆盖查询**: - 覆盖索引仅包含查询所需数据,避免了回表,提高性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值