explain + sql:
mysql> explain select * from user; +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | user | ALL | NULL | NULL | NULL | NULL | 5 | | +----+-------------+-------+------+---------------+------+---------+------+------+-------+
1. id
2. select_type
查询类型
+----+-------------+ | id | select_type | +----+-------------+ | 1 | SIMPLE | +----+-------------+ | 2 | PRIMARY | +----+-------------+ | 3 | SUBQUERY | +----+-------------+ | 4 | DERIVED | +----+-------------+ | 5 | UNION | +----+-------------+ | 6 | UNION RESULT | +----+-------------+
简单的select查询
,查询中不包含子查询或者UNION
子查询被标记为DERIVED
(衍生),MySQL会递归执行这些子查询,把结果放在临时表
中 ,,,,临时表!3.table
4.type
表示查询用到了那种索引类型
+-----+-------+-------+-----+--------+-------+---------+-------+ | ALL | index | range | ref | eq_ref | const | system | NULL | +-----+-------+-------+-----+--------+-------+---------+-------+
从最好到最差依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
system 表中只有一条记录,一般来说只在系统表里出现。
最左前缀
规则索引的查询. 5.key 和 possible key 与 key_len
possible_keys
中出现, 但是并不表示此索引会真正地被 MySQL 使用到. MySQL 在查询时具体使用了哪些索引, 由 key
字段决定.显示索引的哪一列被使用了。
7.rows
MySQL 查询优化器根据统计信息, 估算 SQL 要查找到结果集需要扫描读取的数据行数 这个值非常直观显示 SQL 的效率好坏, 原则上 rows 越少越好
8.extra
额外信息
原文:https://www.cnblogs.com/chafanbusi/p/10633302.html