MySQL之Explain关键字解析
Extra
Using index
- 表示相应的select操作中使用了覆盖索引,避免访问了表的数据行,效率不错!
- 如果同时出现using where,表明索引被用来执行索引键值查找。
- 如果没有同时出现using where,表明索引用来读取数据而非执行查找动作。
覆盖索引
select的数据列只需要从索引中就能够获取到,不比读取数据行,MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件,换句话说:查询列要被所建的索引覆盖。
比如:
* 已知现有索引:idx_col1_col2_col3
* 现有查询语句:select col1, col2 from t1
* 在这条语句中,select查询的列为col1和col2,而索引idx_col1_col2_col3中恰好包含col1和col2,所以这条语句可以实现索引覆盖。
using where
表明使用了where过滤
using join buffer
使用了连接缓存,当语句中多次出现join连接时,会出现此关键字。此时可以适当调大join buffer缓冲区的大小。
impossible where
where子句的值总是false,不能用来获取任何元组。
例如:select * from people where name = '张三' and name = '李四';
在这条SQL中,where的条件是name即等于张三有等于李四,一个人的名字不可能存在这种情况,此时MySQL会给出impossible where的关键字,表明where后的条件总是false。
select table optimized away
在没有group by子句的情况下,基于索引优化MIN/MAX操作或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化
distinct
优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作
https://e.naixuejiaoyu.com/detail/l_618a4743e4b0c5aef39f896e/4?fromH5=true
作者:zkm1992
出处:https://www.cnblogs.com/zkm1992/p/15510698.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?