覆盖索引原理
好处
- 覆盖索引避免了二次查询(回表)
innodb是以聚簇索引的主键的顺序来存储的,二级索引的叶子节点保存的是主键的值,一般情况下,我么通过二级索引找到叶子节点对应的主键的值还要
通过IO回表
到聚簇索引上找对最终我们要查询的值,但是有了覆盖索引,我们就可以直接在非聚簇索引的叶子节点上找到我们要查询的信息了,这样避免了对主键的二次查询,减少了IO
,加快了查询速度
- 把随机IO变为了顺序IO
由于覆盖索引是按照主键的简直顺序来存储了,对于数据量大的密集型的范围查询来说,对比随即从磁盘中读取一条数据的IO次数要少得多。因此利用覆盖索引在访问时可以把对
磁盘随机读取IO
转变成索引查询的顺序IO
弊端
索引字段的维护是需要代价的,对于覆盖索引的创建,我们就要权衡考虑好是否建立冗余索引来支持覆盖索引了