第10章 单表访问方法
前导知识
单表查询:from子句后只有一个表
访问方法:MySQL执行查询语句的方式
访问方法的分类
const
- what:通过主键或位移耳机索引列来定位一条记录
- 约束:只能在主键列或唯一二级索引列与一个常数进行等值比较时才有效,必须要保证最多只有一条记录符合搜索条件
ref
- what:通过二级索引列与常数进行等值比较,形成的扫描区间为单点
- 对于普通的二级索引列,使用ref可能获取到多条连续的二级索引记录
- 每获取到一条二级索引记录,会立刻进行回表
ref_or_null
- 只比ref多扫描了一些值为NULL的二级索引记录
- 值为NULL的记录会放在索引的最左边
range
- what:使用索引查询时,扫描区间为若干单点或范围区间
index
- what:扫描全部二级索引记录,但需要的数据均在二级索引中,不用回表
all
- what:全表扫描,扫描全部的聚簇索引
索引合并
使用索引来减少需要扫描的记录时,一般只会为单个索引生成扫描区间
what:特殊情况,可以使用多个索引来完成一次查询,这就是索引合并
Intersection索引合并
- what:对从不同索引中扫描到的记录的主键值取交集,只为交集中的记录进行回表
- 注意:从每个索引中获取到的二级索引记录必须按照主键排序
Union索引合并
- what:对从不同索引中扫描到的记录的主键值取并集,只为并集中的记录进行回表
- 注意:从每个索引中获取到的二级索引记录必须按照主键排序
Sort-Union索引合并
- what:将从各个索引中扫描到的记录的主键值排序,再进行Union索引合并
- 注意:要求从各个索引中扫描到的记录的主键值是有序的