欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

EXPLAIN语法

程序员文章站 2022-05-24 12:47:54
...

 

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中,结果不能缓存,因此必须对主查询中的每一行重新评价