MYSQL系列(四)Explain/Trace的使用

对于mysql的优化或者查看一下sql的执行,我们常用的就是explain,
The EXPLAIN statement provides information about how MySQL executes statements. EXPLAIN works with SELECT, DELETE, INSERT, REPLACE, and UPDATE statements。
使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。
下面我们来着重进行讲解explain中的各个参数。


怎么用

Explain + SQL 语句
在这里插入图片描述
id:
select查询的序列号,包含一组数字,表示查询中select字句或操作的顺序。
id值相同,执行顺序由上至下
id值不同,值越大优先级越高,越先执行。

select_type:
查询类型,主要用于区别普通查询、联合查询、子查询等。
SIMPLE:简单的查询语句,查询中不包含子查询。
PRIMARY:查询中若包含任何复杂的子部分,最外层查询则被标记为。
SUBQUERY:在select或where列表中包含子查询。

type:
连接类型(system、const、eq_ref、ref、range、index、all)
type为NULL时,mysql能够在优化阶段分解查询语句,在执行阶段用不着在访问表或索引。例如:在索引列中选取最小值,可以单独查找索引来完成,不需要再执行时访问表。

possible_keys
显示可能应用到这张表中的索引,一个或多个,但最终是否使用不一定。

key: 实际使用的索引

key_len: 使用索引长度

Extra:
解析查询的额外信息
using filesort: 说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。
Using temporary:内部查询是新建了临时表,为满足查询内部拷贝临时表,查询完成后在自动删除临时表—出现此项要尽快优化。
Using index:表示相应的select操作中使用了覆盖索引,避免了访问表的数据行。


Trace工具的应用

mysql最终是否选择走索引或者一张表涉及多个索引,mysql最终如何选择索引,我们可以用trace工具来一查究竟,开启trace工具会影响mysql性能,所以只能临时分析sql使用,用完之后立即关闭;

mysql> set session optimizer_trace="enabled=on",end_markers_in_json=on;‐‐开启trace
mysql> select * from test where id = '111';
mysql> SELECT * FROM information_schema.OPTIMIZER_TRACE;

执行后的结果保存在 information_schema.OPTIMIZER_TRACE 表中;其中最重要的就是trace字段;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值