索引加的越多越好?

索引是不是加的越多越好?一般排查慢SQL的问题,都是先去看看索引加没加,因为索引能够提高查询效率,既然索引能够提高效率,那么多加几个是不是就会更快?只要查询条件命中,查询效率不就上去了吗?

答案是否定的。索引加的越多,确实能够提高查询效率,但是对于其他方面的影响同样很大。我们都知道索引用的是B+树,每加一个索引,其实就会增加一棵B+树,索引越多,自然树的棵数就会越多,再加上表的数据持续增大,树上的叶子就会越来越多,那么会使得占的磁盘空间越来越大,这是一方面对于磁盘方面的影响。

另一方面从sql效率上来讲,索引多了查询肯定是没问题的,查的快,但是对于表的操作--像新增、修改、删除效率就会变低,每操作一回都得维护一下所有的索引树;如果新增的话,还要去检索添加的位置,因为B+树是从小到大排列的,增加一个就得重新排序,当然如果当前的数据页满了,还要重新去创建新的数据页,那么整个检索、排序、创建、插入,就会大大的降低操作的性能,对查询来讲确实不错,但是对于增删改就没那么友好了。所以很多公司,尤其是一些大厂,对于索引的添加不是那么随便的,都有一定的规则。比方说单表索引的个数不能超过3-5个,对于一些频繁操作的表,尽量不能建太多的索引,要尽量选择一些操作量比较大的字段,或者关联的数量比较大的字段来作为索引。(完)

ps: 如果有任何疑问,欢迎评论区给我留言


已有 0 条评论

    感谢参与互动!