查询计划
比如下面语句:
select * from sa_group_member_t WHERE MEMBER_ROLE_CODE = 'XXXX';
在语句之前加explain ,可看到查询计划为:
±—±------------±------------------±-----------±-----±---------------±---------------±--------±------±-----±---------±------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
±—±------------±------------------±-----------±-----±---------------±---------------±--------±------±-----±---------±------+
| 1 | SIMPLE | sa_group_member_t | NULL | ref | IDX_GROUP_ROLE | IDX_GROUP_ROLE | 258 | const | 1156 | 100.00 | NULL |
±—±------------±------------------±-----------±-----±---------------±---------------±--------±------±-----±---------±------+
解释一下type、possible_keys 和key等几个字段的含义。
type
index:全索引扫描。
ALL:全表扫描,应避免。
ref:查询使用了非unique key或primary key的索引,或者是组合索引的一部分(比如最左前缀)。该type类型是比较常见的。
range:索引范围扫描,使用索引返回一个范围中的行,比如使用>或IN
const :读常量,最多只会有一条记录匹配。一般出现在primary key或unique key查询里。该type类型是比较常见的。possible_keys
可能应用在查询中的索引。key
实际使用的索引。如果为NULL,则表示未使用索引。ref
显示索引的哪一列被使用了rows
返回最终结果前的候选行数,最理想的数字是1,意味着不需要再过滤了