Mysql索引查询失效的情况

摘要:
=,,这可能会导致全表扫描_名称上创建了一个索引,如图4和图5所示,根据人员_名称=“张三”使用的索引图6根据人员_姓名!=“张三没有使用索引图6=这将导致全表扫描。也将导致全表扫描。我不会在这里显示三件事:isnull和isnotnull不能使用索引person_Name已经建立了索引,但它没有索引4:like关键字。如果它以%开头,也会导致索引无效,从而导致全表扫描。参见图85:后面跟着或可能导致索引失败。参见图96:范围查询包括表中的大部分数据,这也会导致索引无效,如图10所示

一:不在索引上使用函数,计算等

  见图一,在kq_time上增加了一个索引

Mysql索引查询失效的情况第1张

 我们使用date()函数进行查询,见图二

Mysql索引查询失效的情况第2张

 图二根据kq_time字段查询并没有使用索引,我们可以根据kq_time换一种写法,他就可以走索引了,见图三

Mysql索引查询失效的情况第3张

 查询条件是一样的,图三的写法就走索引了.

二:尽量少使用!=,<>,这样可能是导致全表扫描

我在person_name上建立了一个索引,见图四

Mysql索引查询失效的情况第4张

 图五根据person_name='张三'使用了索引

 Mysql索引查询失效的情况第5张

 图六根据person_name!='张三'就没有使用了索引

Mysql索引查询失效的情况第6张

 图六!=导致了全表扫描,<>,也会导致全表扫描,我这里就不演示了

三:is null和is not null也无法使用索引

Mysql索引查询失效的情况第7张

 person_name已经建立了索引,然而并没有走索引

四:like关键字 ,以为%开头,也会导致索引失效,导致全表扫描,见图八

Mysql索引查询失效的情况第8张

 五:少用in跟or,可能会导致索引失败.见图九

Mysql索引查询失效的情况第9张

六:范围查询包括表中大部分数据,也会导致索引失效,见图十

Mysql索引查询失效的情况第10张

免责声明:文章转载自《Mysql索引查询失效的情况》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇gitlab如何从Github导入项目Pytorch-Tensor基本操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL语句错误:Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT)

两张表的字段分别是两种不同的比较规则,在进行联表查询的时候就会出现上述错误。字符比较规则有各个层级的,比如数据库、表、字段,这里只需要保证字段的比较规则一致即可。但是为了整体一致,除了特殊的业务需求,我们最好还是保证库、表、字段的比较规则一致。 -- ---------------------------- -- Table structure for a...

MySQL-binlog解析工具

mysqlbinlog MySQL官方原生提供的解析(binlog)二进制日志的工具 用法 mysqlbinlog --no-defaults --help Usage: mysqlbinlog [options] log-files -?, --help Display this help and exit. --base64...

阿里云Centos7安装mysql教程

1 基本安装过程 1.查看系统是否安装了mysql软件 # rpm -qa|grep -i mysql 2.将已经安装过的软件卸载掉。注意:这样的卸载是不彻底,不过这里够用了 # yum remove '软件名' 3.CentOS 7的yum源中默认是没有mysql的。所以,为了解决这个问题我们首先下载安装mysql的repo源。 # wget http:...

tp5 使用SMproxy连接池来连接mysql数据库

前言:之前面试的时候被问到tp5-mysql连接池的问题,一下就蒙了,不知道啥玩意,今天有时间特意百度了一下。 PHP连接池的设计初衷是PHP 没有连接池,所以高并发时数据库会出现连接打满的情况,Mycat 等数据库中间件会出现部分 SQL 无法使用,例如不支持批量添加等,而且过于臃肿。 smproxy的原理是将数据库连接作为对象存储在内存中,当用户需要访...

canal使用小结

一、基本概念 mysql本身支持主从备份,原理就是主库master生成的binlog文件记录了所有的增删改操作语句,然后slave向master发送dump协议,master将binlog日志文件推送给从库slave解析执行,达到数据一致备份的目的。 canal,基于java开发,伪装成一个slave,去监听获取增量的binlog日志文件,然后解析处理获得...

docker-compose .netcoreapi、mysql、nginx多容器部署

前言: ​ 基于上一篇.NetCoreApi容器与MySql容器互联,此处利用docker-compose来快速配置启动mysql容器与.NetCoreApi容器。 注意: ​ docker-compose.yml的编写缩进不要用tab,要直接用空格(坑了我很久。。。) 一、编写docker-compose.yml文件 version: "3" servi...