EXPLAIN语法 博客分类: 数据库 oracleexplain语法用法
EXPLAIN table == DESC table == SHOW COLUMNS FORM table
EXPLAIN [EXTENDED|PARTITIONS] SELECT... --显示该语句将使用哪一个索引以及何时进行多表查询与使用到的表顺序
mysql> EXPLAIN SELECT * FROM BOOKS WHERE BOOK_ID=1;
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| 1 | SIMPLE | BOOKS | const | PRIMARY | PRIMARY | 4 | const | 1 | |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
1 row in set (0.00 sec)
POSSIBLE_KEYS字段列举出了用于查找数据的索引,而KEY字段指示我们实际上用到了XX索引。如果POSSIBLE_KEYS字段的值显示NULL,那么说明没有用到索引。
SELECT_TYPE
SIMPLE 指示简单SELECT语句,没有子查询或者UNION
PRIMARY 当使用子查询时,这是主要的SELECT语句
UNION 当使用子查询时,这是主要的SELECT语句
DEPENDENT UNION 当使用UNION时,这并不是第一个SELECT语句,取决于主查询
UNION RESULT UINON查询
SUBQUERY 子查询中的第一个SELECT语句
DEPENDENT SUBQUERY 子查询中的第一个SELECT语句,取决于主查询
DERIVED 来自于子查询的表
UNCACHEABLE SUBQUERY 指示子查询中的结果不能缓存,因此必须对主查询中的每一行重新评价
UNCACHEABLE UNION 指示子查询的UNION中,结果不能缓存,因此必须对主查询中的每一行重新评价