服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL explain 中列的取值及含义讲解

MySQL explain 中列的取值及含义讲解

2023-05-19 17:17Ch.yang Mysql

这篇文章主要介绍了MySQL explain 中列的取值及含义,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

今天看 《MySQL 是怎样允许的》和 《高性能MySQL》索引相关的部分,觉得有必要整理下 explain 中列的取值及含义。以后工作的时候翻阅查找更快。

type

type 取值 含义
const 使用主键 或 唯一二级索引
eq_ref 被驱动表,用主键 或 唯一二级索引进行 (索引列不为空)
ref 普通 的二级索引进行等值匹配 (索引列不为空)
ref_or_null 普通 的二级索引进行等值匹配 (索引可以为空)
index_merge TODO 索引合并相关的内容待探索
unique_subquery 查询优化器把 in 语句优化成 exists,使用了主键 或 唯一二级索引进行 (索引列不为空)
index_subquery 查询优化器把 in 语句优化成 exists,使用了普通索引
range 范围扫描
index 1. 使用索引覆盖, 但是要扫描全部的索引记录 where条件只命中部分索引
2. 全表扫描, 并且要对主键进行排序
all 全表扫描

ref

表示等值匹配用的是什么

ref 取值 含义 相关列
const 与key列的索引名等值匹配 key
表的列名 与该列进行等值匹配  
func 函数

rows

预计扫描的行数

filtered

是一个百分比数,key1 扫描的数作为分母, common_field 命中的结果为分子

?
1
select * from s1 where key1 > 'z' and common_field = 'a'

表关联的时候,这个指标比较重要,针对下表数据

table rows filtered
s1 9688 10
s2 1 100

extra

extra 取值 含义
Using index 使用了索引覆盖
Using index condition 使用了索引下推
Using where 在 server 层进行了判断(没有索引的列)
Using join buffer (Block Nested Loop) 不能有效利用索引时,退而求其次使用缓存
Using filesort 使用内存或者磁盘进行文件排序
Using temporary 使用了临时表

补充: 简单阐述索引下推

client -> server -> 存储引擎,下推的意思是把筛选放到存储引擎,减少回表的数据量

形如 where key1 > xxx and key3 like ‘%a’ ,5.6 版本 like 的操作是在server层处理的,5.7.x的版本后可以在存储引擎层完成过滤。

补充:group by 优化掉额外的排序操作

?
1
2
3
4
5
select common_field, count(*) as amount from s1 group by common_field;
-- 以上语句会被 mysql 补充为
select common_field, count(*) as amount from s1 group by common_field order by common_field;
-- 如果要省略文件排序, 则显式声明为 order by null
select common_field, count(*) as amount from s1 group by common_field order by null;

后记

TODO: 用 otpimzer trace 查询优化器的具体工作过程

到此这篇关于MySQL explain 中列的取值及含义的文章就介绍到这了,更多相关MySQL explain列的取值及含义内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/chenghan_yang/article/details/129654918

延伸 · 阅读

精彩推荐
  • MysqlMySQL数据库的约束限制详解

    MySQL数据库的约束限制详解

    这篇文章主要介绍了MySQL数据库的约束限制详解,数据库的约束是对表中数据进行的一种限制,为了保证数据的正确性、有效性、完整性,下文简单介绍需...

    面屏思过5232022-08-03
  • MysqlMySQL 大表添加一列的实现

    MySQL 大表添加一列的实现

    这篇文章主要介绍了MySQL 大表添加一列的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随...

    干货满满张哈希4632021-04-12
  • MysqlMySQL清空数据表的方法实例与分析

    MySQL清空数据表的方法实例与分析

    这篇文章给大家详细介绍了MySQL清空数据表的方法,文中给出了实例代码,对大家学习使用MySQL具有一定的参考借鉴价值,有需要的可以参考借鉴,下面来一...

    daisy4572020-06-27
  • MysqlMysql最新版8.0.21下载安装配置教程详解

    Mysql最新版8.0.21下载安装配置教程详解

    这篇文章主要介绍了Mysql最新版8.0.21下载安装配置教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需...

    FamilyYan4462021-01-25
  • Mysql基于一致性hash算法(consistent hashing)的使用详解

    基于一致性hash算法(consistent hashing)的使用详解

    本篇文章对一致性hash算法(consistent hashing)的使用进行了详细的分析介绍。需要的朋友参考下 ...

    MYSQL教程网5182019-12-25
  • MysqlMySQL优化之分区表

    MySQL优化之分区表

    这篇文章主要介绍了MySQL优化之分区表,需要的朋友可以参考下...

    MYSQL教程网4352020-06-12
  • Mysqlmysql8.0.12如何重置root密码

    mysql8.0.12如何重置root密码

    这篇文章主要为大家详细介绍了mysql8.0.12如何重置root密码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    好记忆和烂笔头5552020-09-09
  • MysqlMysql实现null值排在最前/最后的方法示例

    Mysql实现null值排在最前/最后的方法示例

    这篇文章主要给大家介绍了关于Mysql实现null值排在最前/最后的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价...

    smileNicky5592019-06-05