加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_商丘站长网 (https://www.0370zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql使用 【Mysql】EXPLAIN

发布时间:2022-12-08 13:35:38 所属栏目:MySql教程 来源:转载
导读: Explain关键字是Mysql中sql优化的常用「关键字」,通常都会使用Explain来「查看sql的执行计划,而不用执行sql」,从而快速的找出sql的问题所在。
EXPLAIN SELECT * FROM user;

总计有十二

Explain关键字是Mysql中sql优化的常用「关键字」,通常都会使用Explain来「查看sql的执行计划,而不用执行sql」,从而快速的找出sql的问题所在。

EXPLAIN SELECT * FROM user

总计有十二个字段:

id字段:id表示执行select查询语句的序号,一般出现在多重嵌套的查询中,它是sql执行的顺序的标识,sql按照id从大到小执行,id相同的为一组,从上到下执行。

比如explain ( select * from user where id in (select user_id from role))

两者的id都相同,便表示sql的执行从上往下执行。

若两者的id不相同,id越大的就越先执行(一般是子查询)

select_type字段: 表示该语句是简单查询、简单的子查询、from子句的子查询还是union查询

table字段: table字段表示的是查询的是哪个表

type字段: type字段表示的sql关联的类型或者说是访问的类型,从这个字段中我们可以确定这条sql查找数据库表的时候,查找记录的大概范围是怎么样的,直接就能体现sql的效率问题。

比如:

system:表示表中只有一行记录

const:唯一索引或者主键索引中使用等值查询,一次索引找到记录。

eq_ref:表示使用唯一索引或者主键索引扫描作为表链接匹配条件,对于每一个索引键,表中只有一条记录与之匹配。

ref:ref与eq_ref的区别就是eq_ref使用的是唯一索引或者主键索引。

range:range使用索引来检索给定范围的行数据,一般是在where后面使用between、大于小于号等

index:表示会遍历索引树,但是出现index说明需要检查自己的索引是否使用正确。

ALL:全表查询。

possible_keys: 表示这一列查询语句可能使用到的索引

key字段: 表示的真正使用到的索引

key_len字段: 表示sql查询语句中索引使用到的字节数mysql使用,这个字节数并不是实际的长度,而是通过计算查询中使用到的索引中的长度得出来的,显示的是索引字段最大的可能长度。

ref字段:

rows字段: rows表示估算的要扫描的行数。

Extra字段:

Using index: 表示查询的列被索引覆盖,这个是查询性能比较高的体现,即所要查询的信息搜在索引里面可以得到,不用回表。

Using where:该属性与Using index相反,查询的列并没有被索引覆盖,where条件后面使用的是非索引的前导列。

partitions、filtered字段: partitions表示所匹配的分区;filtered表示的是查询表行所占表的百分比。

(编辑:开发网_商丘站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!