mysql的explain解释器的相关资源网上很多,这里我只记录一下我关心的Type列
type
- type字段的意思:当前sql扫描表的方法
- type字段对应的value值:
- system > const > eq_ref > ref > range > index > ALL
- 查询效率从左往右越来越差
- system:系统表,少量数据,往往不需要进行磁盘IO
- const:常量连接
- eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描
- ref:非主键非唯一索引等值扫描
- range:范围扫描
- index:索引树扫描
- ALL:全表扫描(full table scan)
- 部分扫描方式的应用场景
- system
- 应用场景:扫描mysql系统表
- const
- 应用场景:
- 使用的条件是【主键】或者【唯一索引】;
- 被连接的部分是一个常量
- 应用场景:
- eq_ref
- 使用的条件是【主键】或者【唯一索引】
- 需要【联合查询】
- ref
- 【单表查询】或者【联合查询】
- 使用的条件是【非主键索引】和【非唯一索引】
- rang
- 使用的查询条件中包含【>、<、between、in】等范围关键字
- system