光棍节快乐呀~ 哈哈哈哈哈
EXPLAIN语句帮助我们查看某个查询语句的具体执行计划。
1 | mysql> explain select * from tb_name; |
字段名称 | 描述 | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | 查询的序号,包含一组数字,表示查询中执行select子句或操作表的顺序 **两种情况** id相同,执行顺序从上往下 id不同,id值越大,优先级越高,越先执行 |
||||||||||||||||||||||||||
select_type | 查询类型,主要用于区别普通查询,联合查询,子查询等的复杂查询
|
||||||||||||||||||||||||||
table | 输出的行所引用的表 | ||||||||||||||||||||||||||
partitions | 使用的哪个分区,需要结合表分区才可以看到(没遇到过,不会) | ||||||||||||||||||||||||||
type | 显示联结类型,显示查询使用了何种类型,按照从最佳到最坏类型排序
|
||||||||||||||||||||||||||
possible_keys | 可能用到的索引 | ||||||||||||||||||||||||||
key | 实际用到的索引 | ||||||||||||||||||||||||||
key_len | 表示索引中使用的字节数,该列计算查询中使用的索引的长度在不损失精度的情况下,长度越短越好。如果键是NULL,则长度为NULL。该字段显示为索引字段的最大可能长度,并非实际使用长度。
key_len由三部分组成 该列的实际数据最多占用的存储空间长度 如果该列可以存储NULL值,则key_len值在该列的实际数据最多占用存储空间长度的基础上再加1字节 对于使用变长类型的列来说,都会有2字节的空间来存储该变列的实际数据占用的存储空间长度 |
||||||||||||||||||||||||||
ref | 显示索引的哪一列被使用了,如果有可能是一个常数,哪些列或常量被用于查询索引列上的值。 当访问方法是const、eq_ref、ref、ref_or_null、unique_subquery、index_subquery中的一个时,ref列展示的就是与索引列进行等值匹配的内容 |
||||||||||||||||||||||||||
rows | 如果是全表扫描,rows代表估计的行数 如果是使用索引来执行查询,rows表示预计扫描的索引记录行数。 |
||||||||||||||||||||||||||
filtered | 通过过滤条件之后对比总数的百分比 对于单表查询,这个字段的值没有什么意义 |
||||||||||||||||||||||||||
Extra | Mysql EXPLAIN命令中的Extra字段整理 |