Mysql的执行计划

执行计划就是检查sql执行过程的工具,我们可以通过执行计划知道Mysql是怎么样执行sql的,这一点在优化sql时非常有用。

语法

explain + sql语句 -- 查看sql语句的执行计划

举例

建表,添加数据

 

执行计划

执行计划参数说明

id:sql语句的执行顺序。id不同时,id大的先执行;id相同,上面的先执行。此处不演示。

select_type:用于区别查询类型,eg:普通查询、联合查询、子查询等。

1)、SIMPLE:不使用子查询或者union的简单查询。

2)、PRIMARY:sql语句存在多层时,最外层一般是PRIMARY;

3)、SUBQUERY:存在子查询时,子查询部分为SUBQUERY;

4)、DERIVED:from子句的子查询中存在union,则外层select为DERIVED; 

5)、UNION:当使用union拼接查询结果时,union之后的sql语句被标记为UNION;

6)、UNION RESULT:从union表获取结果的select 。

举个例子帮忙理解下:

table:显示当前执行计划的语句是关于哪张表的。

partitions:匹配的分区。

type:访问类型。

常见值如下,其他略:

1)、system(特殊的const)、const:通常情况下,将一个主键放在where后面作为条件查询,mysql优化器就能把这次查询优化转化为一个常量;

2)、eq_ref:唯一性索引扫描,出现在主键或者唯一索引上;

3)、ref:非唯一性索引扫描,出现在非唯一性索引上;

4)、range:索引范围查询;

5)、index:遍历所有索引;

6)、ALL:全表扫描。

possible_keys :可能使用到的索引。

key:实际使用到的索引。

key_len:索引中使用的字节数。

ref:索引的哪一列被使用情况。

rows:mysql根据表信息及索引使用信息,估算返回结果需要查询的数据行数,可参考但不保证准确。

filtered:返回结果的行占需要读到的行(rows列的值)的百分比。

Extra:其他重要的额外信息。

1)、Using filesort:不使用索引排序,需要文件排序;

2)、Using temporary:对查询结果排序使用了临时表,eg:group by、order by;

3)、Using index:使用了索引;

4)、Using where:使用了where条件;

...

 

 

如果有写的不对的地方,请大家多多批评指正,非常感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值