建立索引原则

    Mysql是非常一款优秀数据存储、查询工具,目前也成为互联网主流数据库之一;随着企业发展,Mysql存储的数据也越来越多,也逐渐出现慢查询的情况,因此mysql也为表提供了索引来优化慢查的问题,也是现在主流优化数据库慢查的方式之一;但是是不是索引建立就能解决解决慢查问题呢,索引建多少合适,是不是越多越好呢?如果不是,那建立索引应该怎么建立呢,有什么原则可以遵守呢?下面我们来讨论一下:

1、表中数据量少时,不加索引

    当表的数据比较少时,建议不要加索引;因为索引其实也是一种数据结构,在新增或者删除时,也存在资源消耗;当数据量(系统配置表等等)很少时,其实Mysql本身数据结构的查询已经足够快了,再加索引反而增加了多个数据结构的查询,增加了耗时。

2、索引不宜太多

    单表中,索引的数量不适合建太多,尽量保证在个位数以内; 在新增数据时,Mysql会每次更新一次索引,有多少个索引(B+树结构)就会更新多少次,因此数据量超过GB级别时,索引起码也是以M为单位了;消耗内存的同时,也影响表数据操作的效率

3、索引字段不宜太多

    因为索引是B+树结构,当字段太多事,其实反而起不到应有的效率,反而加却了慢查的几率;假如索引字段数很多,那么在使用索引时,就会增加遍历次数,延迟了时间,其次在建立索引时,增加B+树的建立时间,成本会很高

4、 多用联合索引 

    由于Mysql查询时,只会用到一个索引,不会进行索引叠加,所以,联合索引查询用到多个字段索引效果会比单索引效率更高

5、 最左前缀原则

      最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。例如:b = 2 如果建立(a,b)顺序的索引,是匹配不到(a,b)索引的;但是如果查询条件是a = 1 and b = 2或者a=1(又或者是b = 2 and b = 1)就可以,因为优化器会自动调整a,b的顺序。再比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,因为c字段是一个范围查询,它之后的字段会停止匹配。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容