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

借用上一篇文章的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种比较常见的失效场景,实际上还有很多,我们在实际开发中要注意到这些问题,不能掉到坑里去了,哈哈^_^  。

原文:https://blog.csdn.net/dwl0208/article/details/83448520

MySQL索引失效的几种场景的更多相关文章

  1. mysql索引总结(4)-MySQL索引失效的几种情况

    mysql索引总结(1)-mysql 索引类型以及创建 mysql索引总结(2)-MySQL聚簇索引和非聚簇索引 mysql索引总结(3)-MySQL聚簇索引和非聚簇索引 mysql索引总结(4)-M ...

  2. MySQL索引失效的几种情况

    1.索引不存储null值 更准确的说,单列索引不存储null值,复合索引不存储全为null的值.索引不能存储Null,所以对这列采用is null条件时,因为索引上根本 没Null值,不能利用到索引, ...

  3. 【转-mysql索引失效的几种情形】

    索引并不是时时都会生效的,比如以下几种情况,将导致索引失效: 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 注意:要想使用or,又想让索引生效,只能将or条件 ...

  4. mysql 索引失效的几种情况+

  5. MySQL索引失效的常见场景

    当然请记住,explain是一个好习惯! MySQL索引失效的常见场景 在验证下面的场景时,请准备足够多的数据量,因为数据量少时,MySQL的优化器有时会判定全表扫描无伤大雅,就不会命中索引了. 1. ...

  6. 面试突击60:什么情况会导致 MySQL 索引失效?

    为了验证 MySQL 中哪些情况下会导致索引失效,我们可以借助 explain 执行计划来分析索引失效的具体场景. explain 使用如下,只需要在查询的 SQL 前面添加上 explain 关键字 ...

  7. mysql——索引失效

    索引失效的几种情况:https://www.jianshu.com/p/9c9a0057221f

  8. 面试题: MySQL 索引失效的10大原因

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.建表: CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_ ...

  9. Mysql 索引失效场景

    例如:一张USER表   有字段属性 name,age   其中name为索引 下面列举几个索引失效的情况 1. select * from USER where name=‘xzz’ or age= ...

随机推荐

  1. web和网络基础

    TCP/IP 协议族按层次分别分为以下 4 层: 应用层. 传输层. 网络层和数据链路层 把 TCP/IP 层次化是有好处的. 比如, 如果互联网只由一个协议统筹, 某个地方需要改变设计时, 就必须把 ...

  2. centos7快速安装coreDns

    1.下载二进制文件 wget https://github.com/coredns/coredns/releases/download/v1.5.0/coredns_1.5.0_linux_amd64 ...

  3. es数据二次开发统计展示

    案例1 在es查询中按照多列分组的时候 分组列的count值会越来越少 es默认隐藏了没有被分组匹配到的记录数  需要在查询的时候开启 2.开启显示没有被分组成功的记录 分组成功的记录加上分组miss ...

  4. OCR3:tesseract script

    通过命令:tesseract -h 可查看 OCR操作脚本参数: 其中参数说明: –-oem:指定使用的算法,0:代表老的算法:1:代表LSTM算法:2:代表两者的结合:3:代表系统自己选择. –-p ...

  5. linux下执行python 提示module找不到 要加入系统路劲才找得到

    linux/cmd中python路径导入ModuleNotFoundError: No module named 'xxx'   import osimport syscurPath = os.pat ...

  6. 大数据集群环境搭建之一 hadoop-ha高可用安装

    1.如果你使用root用户进行安装. vi /etc/profile 即可 系统变量 2.如果你使用普通用户进行安装. vi ~/.bashrc 用户变量 export HADOOP_HOME=/ex ...

  7. nohup 、&、 2>&1 命令分析

    nohup的意思是不间断的运行,&的意思是后台运行,2>&1的意思是标准输出和错误输出都重定向到同一个文件. 简单地说nohup运行时即使关掉控制台,它该运行还是运行. http ...

  8. php原型模式(prototype pattern)

    练练练,计划上午练完创建型设计模式. <?php /* The prototype pattern replicates other objects by use of cloning. Wha ...

  9. HDU3572 Task Schedule(最大流+构图思维)

    题意: 有N个任务M个机器,给每个任务i完成所花费的时间Pi且每个任务要在第Si天后开始,在第Ei天前结束,保证任务在(S,E)之间一定能完成. 每个机器在一天里只能运行一个任务,一个任务可以在中途更 ...

  10. python正则表达式(2)--编译正则表达式re.compile

    编译正则表达式-- re.compile 使用re的一般步骤是先将正则表达式的字符串形 式编译为pattern实例,然后使用pattern实例处理文本并获取匹配结果(一个Match实例(值为True) ...