浅谈mysql增加索引不生效的几种情况


Posted in MySQL onJune 23, 2021

增加索引可以提高查询效率。

增加索引就是增加一个索引文件,存放的是数据的地址,类似与我们文档的目录,在查找过程中可以不用从书的内容查找,直接根据目录对应的页码查找。索引是根据地址查找。
创建索引,索引使用的数据结构也有很多种。常见的是B-tree,哈希等。mysql默认使用的数据库索引是innerDB,innerDB的索引结构是B-tree。
但是在使用过程中哪些情况增加索引无法达到预期的效果呢?下面列举几种常见情况:
假设name age address 都已经加了索引。索引名字分别为 index_name,index_age,index_address。

用explain查看SQL的执行计划

执行计划的 type

表示MySQL在表中找到所需行的方式,又称“访问类型”,常见类型如下:

ALL, index, range, ref, eq_ref, const, system, NULL
ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行
index:Full Index Scan,index与ALL区别为index类型只遍历索引树
range:索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行。显而易见的索引范围扫描是带有between或者where子句里带有<, >查询。当mysql使用索引去查找一系列值时,例如IN()和OR列表,也会显示range(范围扫描),当然性能上面是有差异的。
ref:使用非唯一索引扫描或者唯一索引的前缀扫描,返回匹配某个单独值的记录行
eq_ref:类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件。

1、使用查询多列使用or,type=all

浅谈mysql增加索引不生效的几种情况

2、使用模糊查询,type=all

浅谈mysql增加索引不生效的几种情况

3、在加索引的字段上有运算

浅谈mysql增加索引不生效的几种情况

4、如果列类型是字符串,需要使用引号引用起来。name字段是字符串类型

没引号 type=all

浅谈mysql增加索引不生效的几种情况

有引号 tye=ref

浅谈mysql增加索引不生效的几种情况

首先mysql有个类型转换规则就是将“字符转成数字”,上面的sql是包含运算的:
explain SELECT name,age,address FROM user where cast(name as signed)= 10;

5、反向查询区分情况

(not , not in, not like, <>, != ,!>,!< ) 使用索引效果

浅谈mysql增加索引不生效的几种情况

浅谈mysql增加索引不生效的几种情况

浅谈mysql增加索引不生效的几种情况

浅谈mysql增加索引不生效的几种情况

浅谈mysql增加索引不生效的几种情况

浅谈mysql增加索引不生效的几种情况

其他情况

1、联合索引中关联字段没有使用相同的字符集;
2、联合索引查询时没有用到第一个索引字段,即不满足最左原则;
3、本身数据量很少,mysql会判断是否需要使用索引;

到此这篇关于浅谈mysql增加索引不生效的几种情况的文章就介绍到这了,更多相关mysql增加索引不生效内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL数据迁移相关总结
Apr 29 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
MySQL Shell import_table数据导入的实现
Aug 07 MySQL
浅谈MySQL之select优化方案
Aug 07 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
一文弄懂MySQL索引创建原则
Feb 28 MySQL
mysql 获取时间方式
Mar 20 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
Mysql排查分析慢sql之explain实战案例
Apr 19 MySQL
mysql联合索引的使用规则
为什么代码规范要求SQL语句不要过多的join
详解MySQL多版本并发控制机制(MVCC)源码
MySQL快速插入一亿测试数据
MySQL8.0.18配置多主一从
Jun 21 #MySQL
MySQL中日期型单行函数代码详解
如何搭建 MySQL 高可用高性能集群
Jun 21 #MySQL
You might like
用文本文件制作留言板提示(下)
2006/10/09 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
Python实现一个简单的验证码程序
2017/11/03 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
台湾良兴购物网:EcLife
2019/12/01 全球购物
汽车装潢店创业计划书范文
2014/02/05 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
财务科科长岗位职责
2014/03/10 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
员工试用期自我评价
2014/09/18 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
革命电影观后感
2015/06/18 职场文书
公司转让协议书
2016/03/19 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS