| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Mysql单表查询时候的索引情况:索引是否失效 -> 正文阅读 |
|
[大数据]Mysql单表查询时候的索引情况:索引是否失效 |
介绍使用命令 explain 对sql进行分析 例如:
结果如下: 关键信息是这个type的值 type常用值介绍:
更多信息请参考:https://www.cnblogs.com/xuanzhi201111/p/4175635.html 1. 单表实验0. 环境介绍
1. like关键字1. 不带通配符
可以看到,使用了range:只检索给定范围的行,使用一个索引来选择行。相当于走了索引 2. 使用前置 _
可以看到,使用了全表扫描,索引失效 3. 使用后置_
可以看到,type是range,索引生效 4. 使用前置%
使用前置%进行模糊查询,索引失效,type是all,进行了全表扫描 5. 使用后置%
type是range,索引有效,没有进行全表扫描 6. 补充内容:instr网上说instr可以避免like的索引失效,是不是这样呢?
看一下这个语句的分析吧:
结果是: 总结一下就是: 使用like进行模糊查询,在mysql8.0,InnerDB引擎下
2. = 进行选择1. 无需类型转换
? 可以看到,主键type是const,其实就是只查询了一行,直接找到
ref类型,直接找到
ref类型,直接找到 2. 需要类型转换varchar列,给int值
全表扫描 int列,给char值
直接找到,不需要,无需索引 3. 运算符1. 普通算术运算符
其他运算符也大差不差,这里只是用 > 运算符做演示
普通运算符,range类型,索引生效 2. <> 运算符1. 在普通索引列,没有null值时
all类型,索引失效,所以网上说的 <> 运算符导致索引失效时真的。 网上说,可以使用,下方sql语句替换
请看结果: 没有用,依旧是全表扫描 2. 普通索引列,有null值时
可以看到,索引没有失效,不会和null那部分数据进行比较,但是有值的都是会进行比较的。 name列一样。 3. 在主键上
可以看到,虽然是range类型,但是仍然扫描了所有的行,但是不能算是索引失效吧,也能算是索引失效。 4. 总结:可以看到,<> 会对所有非null的数据进行扫描,但是会过滤掉null值不扫描;没有null值的时候也算是全表扫描。有null值的时候,也不算是全表扫描。 如果把<> 操作说成会使索引失效也不能算错吧。 3. is null
可以看到,类型为 ref,索引生效,没有全表扫描 int类型的age与varcahr类型的name结果一致,不在展示age的结果 4. is not null
可以看到,type为all,进行了全表扫描,is not null 导致索引失效。
varchar类型的name与int类型的age结果一致,不在展示name的结果 5. in 和 or1. in
可以看到,当in值比较少的时候,in 可以走索引,索引不失效。 varchar类型的name与 int类型的age结果一致,不再进行展示 当索引值比较多的时候:
索引失效,进行全表扫描 2. or操作,与in相似6个or条件的时候,索引不失效,具体个数应该跟数据量有关系,因为这时候数据总数是14条
超过6个的时候,索引失效
4. where中的其他操作1. 列字段进行运算例如:
全表扫描 2. 在where条件中使用函数例如:
结果; 进行了全表扫描,索引失效 4. 总结
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:12:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |