系列文章目录
在MySQL中,如何定位慢查询?
发现了某个SQL语句执行很慢,如何进行分析?
了解过索引吗?(索引的底层原理)/B 树和B+树的区别是什么?
什么是聚簇索引(聚集索引)和非聚簇索引(二级索引)/什么是回表?
- 系列文章目录
- 什么是覆盖索引?
- MySQL超大分页怎么处理?
什么是覆盖索引?
-
第一条指令是覆盖索引,因为id是主键索引,在InnoDB里面也就是聚簇索引,而聚簇索引的B+树的叶子结点会存储键对应的数据,所以通过索引就能一次性找到所有行。
-
第二条也是覆盖索引,因为name是非聚簇索引,在查找这个B+树时,只能直接在索引里找到name和id值,而这条SQL恰好只需要这两列,所以一次性就找到了,不需要经过回表。
-
第三条不是覆盖索引,因为执行这条语句的时候需要回表查询。
MySQL超大分页怎么处理?
那么只能解决呢?通过覆盖索引加上子查询的方式进行优化。
在子查询中根据id排序和返回id时走的是覆盖索引,使用覆盖索引能够直接找到结果,所以效率相对较高。