MySQL 执行计划详解
EXPLAIN SELECT * FROM users WHERE id IN (SELECT userID FROMuser_address WHERE address = "湖南长沙麓谷") ;
EXPLAIN SELECT * FROM users WHERE id IN (SELECT userID FROMuser_address WHERE address = "湖南长沙麓谷") ;
select 查询的序列号,标识执行的顺序
查询的类型,主要是用于区分普通查询、联合查询、子查询等。
对于 UNION 和 UNION RESULT 可以通过下面的例子展现:
EXPLAIN SELECT * FROM users WHERE id IN(1, 2) UNIONSELECT * FROM users WHERE id IN(3, 4);
查询涉及到的表。
访问类型,SQL 查询优化中一个很重要的指标,结果值从好到坏依次是:system > const > eq_ref > ref > range > index > ALL。
下面通过举例说明。
explain select * from mysql.time_zone;
上例中,从系统库 MySQL 的系统表 time_zone 里查询数据,访问类型为 system,这些数据已经加载到内存里,不需要进行磁盘 IO,这类扫描是速度最快的。
explain select * from (select * from user