浅谈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 05 MySQL
mysql字符串截取函数小结
Apr 05 MySQL
jdbc使用PreparedStatement批量插入数据的方法
Apr 27 MySQL
MySQL分库分表详情
Sep 25 MySQL
一文搞懂MySQL索引页结构
Feb 28 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
MySql分区类型及创建分区的方法
Apr 13 MySQL
mysql 8.0.27 绿色解压版安装教程及配置方法
Apr 20 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
MySQL 逻辑备份 into outfile
May 15 MySQL
MySQL表字段数量限制及行大小限制详情
Jul 23 MySQL
mysql联合索引的使用规则
为什么代码规范要求SQL语句不要过多的join
详解MySQL多版本并发控制机制(MVCC)源码
MySQL快速插入一亿测试数据
MySQL8.0.18配置多主一从
Jun 21 #MySQL
MySQL中日期型单行函数代码详解
如何搭建 MySQL 高可用高性能集群
Jun 21 #MySQL
You might like
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
JavaScript this 深入理解
2009/07/30 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
JavaScript运行机制实例分析
2020/04/11 Javascript
获取python文件扩展名和文件名方法
2018/02/02 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
python 常用的基础函数
2018/07/10 Python
Python unittest单元测试框架总结
2018/09/08 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
大学生开西餐厅创业计划书
2014/02/01 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android