qindyyx 发表于 2013-1-29 15:24:52

EXPLAIN语法

 
EXPLAIN table == DESC table == SHOW COLUMNS FORM table
EXPLAIN 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 RESULTUINON查询
SUBQUERY子查询中的第一个SELECT语句
DEPENDENT SUBQUERY子查询中的第一个SELECT语句,取决于主查询
DERIVED来自于子查询的表
UNCACHEABLE SUBQUERY指示子查询中的结果不能缓存,因此必须对主查询中的每一行重新评价
UNCACHEABLE UNION指示子查询的UNION中,结果不能缓存,因此必须对主查询中的每一行重新评价
页: [1]
查看完整版本: EXPLAIN语法