您的位置:首页 > 其它

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

2018-01-23 13:18 393 查看
创建索引的目的是为了加快查询速度,但是任何事情都是过犹不及的。

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

(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很小的索引,分析一下为什么有维护的开销,而实际索引使用次数较少,是不是索引建的不合理,其中的字段顺序、个数都不对。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: