MySQL性能分析之explain

1 篇文章 0 订阅
1 篇文章 0 订阅

explain分析

EXPLAIN SELECT * FROM order WHERE id>2 AND order_sn<>''

结果:
在这里插入图片描述
说明:

  • id:一组数字,操作顺序,如果id相同,则执行的顺序就由上至下,如果是子查询,id的序号递增,值越大优先级越高,越先被执行;
  • select_type:表示每个字句的类型,简单还是复杂,取值如下:
参数描述
simple简单查询,无子查询或union等
primary查询中若包含复杂的子部分,最外层则被标记为primary
subquery在select或where中若包含子查询,则该子查询被标记为subquery
derivedfrom中包含子查询,被标记为derived
union若select出现在union之后,则被标记为union
union result从union表中获取结果的select将被标记为union result
  • table:查询的数据库表名称
  • type:联合查询使用的类型
参数描述
all全表扫描
index全表扫描,只是扫描表的时候按照索引次序进行而不是行。主要优点就是避免了排序,但是开销仍然非常大。
range索引范围扫描。
ref非唯一索引扫描,较返回匹配单独值的所有行,常见于使用非唯一性索引或唯一性索引的非唯一前缀进行的查找。
eq_ref唯一性索引扫描。
const、system当MySQL对查询的某部分进行优化,并转换为一个常量时。如果将主键置于where列表中,MySQL就能将该查询转换为一个常量。system时const的特列,当查询的表只有一行的情况下,即可使用system。
  • possible_keys:指出MySQL能使用哪个索引在表中找到行,查询涉及的字段上若存在索引,则该索引将被列出。如果为空,说明没有可用的索引。
  • key:使用到了哪个索引,这里列出的是实际使用到的索引,若没有使用索引,则显示为null。
  • key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好。
  • ref:显示索引的哪一列被使用了。
  • rows:MySQL认为必须检查的用来返回请求数据的行数。找到所需记录,需要读取的行数,越少越好。
  • Extra:不适合在其他列显示,但却十分重要的信息,常见的有如下值:
取值说明
Using index使用了索引检索。
where used使用了where限制,但是用索引还不够。
Using temporary需要使用临时表来存储结果集,常见于排序和分组查询。性能差。
Using filesoft使用了文件排序,性能差。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值