MySQL之Explain关键字解析

Extra

Using index

  1. 表示相应的select操作中使用了覆盖索引,避免访问了表的数据行,效率不错!
  2. 如果同时出现using where,表明索引被用来执行索引键值查找。
  3. 如果没有同时出现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 国际」许可协议进行许可。

posted @   阿张Respect  阅读(52)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示