索引的缺点(4):过多的索引会降低性能

创建索引的目的是为了加快查询速度,但是任何事情都是过犹不及的。

如果建的索引太多,反而会降低性能。


(1)多少索引算多?

先说个真实的事。

前几年的时候,有一次写一个简单的sql,觉得查的很慢,想想是不是少了索引。

于是打开ssms客户端,点开表下面的索引,发现这个表尽然有100多个索引,当时就懵了。。。

这100多个索引,实在是太多了,同时也说明这个数据库没有DBA管理,很混乱,这个可能是更大的问题。

一般情况下,一个表的索引,个人觉得5个左右,这个具体的数量,可以进行实际的测试,如果索引多了,觉得插入慢,可以减少,或者合并索引。


(2)通过监控,删除不用的多余索引

删除只有user_updates的,但user_seeks为0的。

select     
    DB_NAME(d.database_id),    
    OBJECT_NAME(d.object_id),    
        
    i.name,    
    user_seeks,    
    user_scans,    
    user_lookups,    
        
    user_updates  --通过用户查询执行的更新次数      
from sys.dm_db_index_usage_stats d    
inner join sys.indexes i    
        on d.object_id = i.object_id    
           and d.index_id = i.index_id    
where database_id = DB_ID('数据库名')  

(3)找到低效索引

找到user_updates比较大,而user_seek、user_scan很小的索引,分析一下为什么有维护的开销,而实际索引使用次数较少,是不是索引建的不合理,其中的字段顺序、个数都不对。


  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值