mysql查询分析explain

EXPLAIN:使用EXPLAIN| DESCRIBE查看语句具体执行计划,并不真正执行语句(在估计大致数据量时可以使用explain)

  • type:针对单表的访问方法
    • system:当表中只有一条记录,并且该表使用的存储引擎统计数据是准确的如MyISAM、Memory
    • const:根据主键或唯一二级索引与常数进行等值匹配
    • eq_ref:连接查询时,被驱动表通过主键或唯一二级索引进行等值查询
    • ref:根据普通二级索引进行等值查询。ref_or_null
    • index_merge:索引合并方式进行查询
    • unique_subquery:优化器把IN子查询转换为EXISTS子查询,且子查询可以用到等值匹配
    • range:使用索引获取区间范围的记录
    • index:可以使用覆盖索引,但需要扫描全部索引记录
    • ALL:全表扫描
  • possible_keys:可能使用到的索引。key:实际使用到的索引
  • key_len:实际利用的索引长度,值越大越好,检查是否充分利用到了索引,对于联合索引有一定参考意义
  • Extra:额外信息,更准确地理解mysql到底将如何执行给定的查询语句
    • No tables used:没有from子句
    • Impossible WHERE:where子句永远为FALSE
    • Using where:全表扫描,使用索引但where包含其他列
    • NULL:使用索引
    • No matching min/max row:使用了聚合函数,但没有符合where子句中搜索条件的记录
    • select tables optimized away:使用了聚合函数,有符合where子句中搜索条件的记录
    • using index:使用覆盖索引不需要回表
    • using index condfition:索引下推
    • using join buffer:连接查询。被驱动表不能有效利用索引,mysql会为其分配join buffer内存快加快查询
    • Not exist:where包含某不允许为null的列值为null
    • using union:索引合并
    • Zero limit:limit参数为0
    • using filesort:不能使用排好序的索引,要现场内存排序,很消耗性能
    • using temporary:使用临时表,很消耗性能
  • ref:使用索引列等值查询,与索引列进行等值匹配的对象信息
  • rows:预估需要读取的记录条数,值越小越好
  • filtered:经过搜索条件过滤后剩余记录条数的百分比,越高越好。单表查询意义不大,连接查询中决定被驱动表的要执行的次数
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值