①覆盖索引不是索引类型,而是一种数据查询方式,指的是select查询语句使用到了索引,并且需要的字段在索引中都能找到,不需要进行回表查询。比如我们使用主键id查询,会直接走聚簇索引,一次索引扫描就能找到需要的全部数据,性能比较高。
按照非聚簇索引查询的时候,如果需要的字段在索引中不能全部找到,就会触发回表查询,所以我们应该尽量避免使用select*查询语句,尽量让返回的字段都是添加了索引的字段。
②超大分页一般是在数据量比较大的时候,使用了limit分页查询,并且需要对数据进行排序,这个时候效率就很低,我们可以使用覆盖索引加子查询的方案来解决。
我们先分页查询出数据的id字段,因为操作一个id字段比操作整行数据要快很多,确定了id列表后,我们再使用子查询来过滤,只查询这个id列表对应的数据即可。使用id查询的时候,采用了覆盖索引的方式,走的是聚簇索引,所以性能可以提升很多。