MySQL索引最佳实践
赢在
刘宏仓
DT
02 MySQL EXPLAIN
• EXPLAIN SQL
1. EXPLAIN EXTENDED SQL
将执行计划“反编译”成SELECT语句,
运行SHOW WARNINGS 可得到被MySQL优化
器优化后的查询语句
2. EXPLAIN PARTITIONS SQL
用于分区表的EXPLAIN
03 MySQL EXPLAIN
• EXPLAIN RESULT
ID:
1.
2. SELECT_TYPE
3. TABLE
4. TYPE
5. POSSIBLE_KEYS
6. KEY
04 MySQL EXPLAIN
• EXPLAIN RESULT
7. KEY_LEN
8. REF
9. ROWS
10.EXTRA
05 MySQL EXPLAIN
• EXPLAIN RESULT
ID: 一组数字,表示执行SQL子句或操作表的顺序
ID相同,执行顺序由上至下
子查询中ID的序号会递增,id值越大优先级越高,越先被执行
在所有组中,ID值越大,优先级越高,越先执行
06 MySQL EXPLAIN
• EXPLAIN RESULT
SELECT_TYPE:表示查询中每个SQL子句的类型
1 SIMPLE
2 PRIMARY
3 SUBQUERY
4 DERIVED
5 UNION
6 UNION RESULT
简单
复杂
07 MySQL EXPLAIN
• EXPLAIN RESULT
1. SIMPLE:查询中不包含子查询或者UNION
2. 查询中若包含任何复杂的子查询,最外层查询被标记为:PRIMARY
3. 在SELECT或WHERE列表中包含了子查询,
该子查询被标记为:SUBQUERY
4. 在FROM列表中包含的子查询被标记为:DERIVED(虚拟)
5. 如果第二个SELECT出现在UNION之后,则被标记为UNION;如果UNION
包含在 FROM子句的子查询中外层SELECT将被标记为:DERIVED
6. 从UNION表获取结果的SELECT被标记为:UNION RESULT
08 MySQL EXPLAIN
• EXPLAIN RESULT
TABLE:显示所访问的数据库中的表名或别称