单表访问方法
查询的执行方式大致分为下边两种:
使用全表扫描进行查询
使用索引进行查询。
唯一二级索引就是作为索引的那列值都是唯一的,没有重复的。
const
意思是常数级别的,代价是可以忽略不计的。不过这种const
访问方法只能在主键列或者唯一二级索引列和一个常数进行等值比较时才有效
ref
用普通二级索引找到对应记录的id
值,然后再回表到聚簇索引中查找完整的用户记录。
ref_or_null
有时候我们不仅想找出某个二级索引列的值等于某个常数的记录,还想把该列的值为NULL
的记录也找出来
range
SELECT * FROM single_table WHERE key2 IN (1438, 6328) OR (key2 >= 38 AND key2 <= 79);
index
没懂,建议回去看。。。
all
使用全表扫描执行查询的方式称之为:all
。
索引合并
Intersection合并(交集合并)
SELECT * FROM single_table WHERE key1 = 'a' AND key3 = 'b';
-
二级索引的记录都是由
索引列 + 主键
构成的,所以我们可以计算出这两个结果集中id
值的交集。 -
按照上一步生成的
id
值列表进行回表操作,也就是从聚簇索引中把指定id
值的完整用户记录取出来,返回给用户。
Union合并
SELECT * FROM single_table WHERE key1 = 'a' OR key3 = 'b'