笔记大纲
1.单表的访问方法概念
MySQL的SQL查询语句对表的访问或者是查询可以有多种方式,每种方式执行的成本、花费的时间大不一样,MySQL定义了很多种表的访问方式或者叫访问类型来。
1.1 const 访问类型
通过主键索引或者唯一二级索引和常数值进行查询的时候因为目标结果是唯一确定的,MySQL认为这种查询效率十分高,成本消耗几乎忽略不计,这种访问方式定义为常数级访问const。
1.2 ref 访问类型
通过二级索引和常数值进行查询的时候,扫描区间是一个单点区间,MySQL讲这种查询方式定义为ref访问类型。
1.3 ref_or_null 访问类型
这种类型是ref的一种特殊存在,区别是它多了一些扫描Null值的扫描区间。
1.4 range 访问类型
如果查询条件对应的不是一个单点区间,而是一个范围区间,那么MySQL定义这种访问方式是range范围访问类型。
1.5 index 访问类型
通过扫码全部二级索引树获取数据的方式定义为index访问类型。索引树里包含了要查询的列,通过遍历索引即可找到结果。
1.6 all 访问类型
遍历整颗主键索引B+Tree。
2.索引合并
MySQL绝大部分情况下一个查询只能用到一个索引,但是某些特殊场景MySQL做了优化,可以利用多个索引来提升查询效率。
2.1 Intersection 索引合并/交集合并
SELECT * FROM user