Sql优化之explain使用参数详细说明

使用方式:explain+sql语句


(1)select_type:表示 SELECT 的类型。
常见的取值有
SIMPLE(简单表,即不使用表连接或者子查询)
PRIMARY(主查询,即外层的查询)
UNION(UNION 中的第二个或者后面的查询语句)
SUBQUERY(子查询中的第一个 SELECT)等。

(2)table:输出结果集的表。
type:表示表的连接类型,性能由好到差的连接类型如下
1.system(表中仅有一行,即常量表)
2.const(单表中最多有一个匹配行,例如 primary key 或者 unique index)
3.eq_ref(对于前面的每一行,在此表中只查询一条记录,简单来说,就是多表连接中使用primary key或者unique index)
4.ref(与eq_ref类似,区别在于不是使用primary key 或者 unique index,而是使用普通的索引)
5.ref_or_null(与 ref 类似,区别在于条件中包含对 NULL 的查询)
6.index_merge(索引合并优化)
7.unique_subquery(in的后面是一个查询主键字段的子查询)
8.index_subquery(与 unique_subquery 类似,区别在于 in 的后面是查询非唯一索引字段的子查询)
9.range(单表中的范围查询)
10.index(对于前面的每一行,都通过查询索引来得到数据)
11.all(对于前面的每一行,都通过全表扫描来得到数据)。


(3)possible_keys:表示查询时,可能使用的索引。

(4)key:表示实际使用的索引。

(5)key_len:索引字段的长度。

(6)rows:扫描行的数量。

(7)Extra:执行情况的说明和描述。
1.Distinct:一旦找到了与行相联合匹配的行就不再搜索了;
2.Using filesort:使用了文件排序,性能非常慢,需要优化。
3.Using index:查询使用到了索引,列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回        的,这发生在对表的全部的请求列都是同一个索引的部分的时候。
4.Using temporary:使用了临时表排序,性能非常慢,需要优化。
5.Using where:表示使用了where进行查询,不是很重要。
6.ALL:这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,需要优化

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值