通过EXPLAIN分析低效SQL的执行计划

Posted 心碎whn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过EXPLAIN分析低效SQL的执行计划相关的知识,希望对你有一定的参考价值。

 explain select * from film where rating>9\\G;

 

select_type 表示select的类型
SIMPLE 代表简单表,不用表连接或子查询
PRIMRY 主查询(外层查询)
UNION UNION中的第二个或者后面的查询语句
SUBQUERY 子查询中的第一个SELECT
table 输出结果集的表  

possible_keys

查询中可能用到的索引  
key 查询中实际用到的索引  
key_len 索引的长度  
rows 扫描的行数  
type 访问类型

从左到右,性能由最差到最好

ALL index range ref eq_ref const,system NULL

ALL:全表扫描

index:索引全扫描

range: 索引的范围扫描 用于<,<=,>,>=,between等操作

ref:使用非唯一索引扫描或者唯一索引的前缀扫描

eq_ref:使用唯一索引扫描,多表链接中使用primary key或者unique key作为关联条件

const/system:单表中只有一个匹配行,查询速度快,根据主键或者唯一索引进行的查询

NULL:mysql不用访问表或者索引,直接能够得到结果

以上是关于通过EXPLAIN分析低效SQL的执行计划的主要内容,如果未能解决你的问题,请参考以下文章

MySQL优化——Explain分析执行计划详解

Mysql explain

分析oracle的执行计划(explain plan)并对对sql进行优化实践

MySQL——通过EXPLAIN分析SQL的执行计划

MySQL——通过EXPLAIN分析SQL的执行计划

ClickHouse 使用EXPLAIN 分析 SQL 执行计划