SQL优化系列-mysql执行计划

语法: explain + sql语句
示例:explain select * from student where name='name1' ORDER BY age desc;

一、返回结果:type
由左至右,由最差到最好:
| All | index | range | ref | eq_ref | const,system | null |

1、ALL(所有)全表扫描(where 非索引列=***、where 非索引列 in、like %)
2、index(索引)根据索引来读取数据、只需扫描索引树(只查询索引列,如select id from ***)
3、 range (范围) 以范围的形式扫描索引(insert、where 索引列 in(***))
4、ref(引用)非唯一性索引访问 (where 非唯一索引列=***)
5、eq_ref(等值引用)使用有唯一性索引查找(唯一性索引)
6、const(常量连接)被称为“常量”,const 发生下面两种情况:
(1)在整个查询过程中这个表最多只会有一条匹配的行,比如主键 id=11 就肯定只有一行;
(2)返回值直接放在 select 语句中,类似 select 1 AS a 

二、Extra 列
Extra表示附加信息,常见的有如下几种(也按查询效率从高到低排列):
1、Using index:表示使用索引,如果只有 Using index,表示只用了索引就完成了这个查询。
2、Using where:表示条件查询,全表扫描,或者不仅仅通过索引查询,则会出现 Using where。如果type列是ALL或index,而没有出现该信息,则你有可能在执行错误的查询:返回所有数据。
3、Using filesort:filesort是MySQL的一种排序策略,通常在排序语句ORDER BY的出现。
4、Using temporary:一般是使用了临时表,通常出现在多表联合查询,结果排序的场合。

如果出现Using filesort,Using temporary,而返回rows比较大,通常意味着你需要调整查询语句,或者需要添加索引,尽量消除这两个信息。

你可能感兴趣的:(mysql)