MySQL索引失效的几种场景

码农编程进阶笔记

共 937字,需浏览 2分钟

 · 2022-02-27


我们都知道建立索引能够提高查询效率,那么是不是任何情况下都能提高呢,当然不是的的,下面我们就来列举一些常见的索引失效的场景。

借用上一篇文章的dm_person_info表

在card_code列没加索引的时,查询时间如下,大概都在0.07秒。


 我们来加上索引试试,加上后查询效率高了许多。



 在正确使用索引的情况下,查询一行数据的时间不到10毫秒,所以显示0.00 sec .

1.列类型是字符串,查询条件未加引号。

card_code列是身份证号,数据类型是varchar,在没有将证件号码用引号括起时不会使用索引,此时索引失效。


 2.未使用该列作为查询条件

索引建在card_code列上,使用tel列作为查询条件,此时该索引未被使用到,也可以说是失效的。


3.使用like时通配符在前

我们可以看到通配符在后面时效率不受影响,说明此时索引未失效,通配符在前时索引失效。

4. 在查询条件中使用OR

查询条件中使用or会使索引失效,要想是索引生效,需要将or中的每个列都加上索引。

5.对索引列进行函数运算

 6.联合索引ABC问题

Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是index (a,b,c),可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c或c进行查找 。

这里只介绍6种比较常见的失效场景,实际上还有很多,我们在实际开发中要注意到这些问题,不能掉到坑里去了,哈哈^_^  。

Mysql百万级数据迁移实战笔记

2022-01-14

为什么大家都说“SELECT *”效率低?

2021-12-26

如何从多个维度来分析Redis中常见的几个重点热门问题

2021-12-21

必须了解的MySQL三大日志:binlog、redo log和undo log

2021-12-19

腾讯PHP/GO工程师面试经历

2021-12-18

浅析码农技术人生存之道

2021-12-11

浏览 40
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报