Open chengfengjie opened 6 years ago
EXPLAIN SELECT * FROM Estate_BasicInfo WHERE estateID = 134\G
输出:
id: 1
select_type: SIMPLE
table: Estate_BasicInfo
partitions: NULL
type: const
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: const
rows: 1
filtered: 100.00
Extra: NULL
输出字段说明:
select_type
: 表示SELECT的类型,包括
SIMPLE
: 简单表,不适用表连接或者子查询PRIMARY
: 主查询,即外层的查询UNION
: UNION中的第二个或者后面的查询语句SUBQUERY
: 子查询中的第一个SELECTtable
: 输出结果集的表type
: 表示MySQL在表中找到所需行的方式,或者叫做访问类型,常见类型如下,性能由差到好
ALL
: 全表扫描,MySQL遍历全表来找到匹配的行,随着数据变多查询越来越慢,应当尽力避免全表扫描index
: 索引全扫描,MySQL遍历所有索引来匹配行range
: 索引范围扫描,常见于 < 、 > 、 <= 、 >= 、between等操作ref
: 使用非唯一索引扫描或唯一索引的前缀扫描,返回某个单独值的的记录行 eq_ref
: 类似ref
,区别就是使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者unique index的关联条件const/system
: 表中最多只有一个匹配行,查询起来非常迅速。NULL
: MySQL不用访问表或者索引,直接能够得到结果。
通过show status命令了解各种SQL的执行频率
SHOW [session|global] STATUS
: 可以获取服务器状态信息, session参数显示session级别,global全局级别