资讯动态

覆盖索引与超长分页优化

发布时间:2026/10/15 4:07:51 来源:尧图企业网站定制
什么是覆盖索引覆盖索引是指查询用到的列包括SELECT返回的列、WHERE/ORDER BY/GROUP BY用到的列全部都能在同一个索引中找到从而不用回表。用id主键查询时直接走聚簇索引叶子节点本就存整行一次索引扫描直接返回数据性能高这属于主键查询不是典型覆盖索引场景。如果查询返回的列不在索引中就会触发回表去聚簇索引查完整数据。判断标志EXPLAIN的Extra出现Using index就是用了覆盖索引。实践建议尽量避免SELECT *把常用查询列放进联合索引才能享受覆盖索引。什么是 mysql 超长分页深度分页指的是LIMIT的偏移量offset非常大的分页查询比如SELECT * FROM orders ORDER BY id LIMIT 1000000, 10;MySQL 实际做的事沿索引顺序读前 100 万零 10 行丢掉前 100 万行只返回最后 10 行扫描了 100 万零 10 行实际只要 10 行。浪费就在这。代价和 offset 成正比——offset 越大要扫描、丢弃的行越多越慢。如何优化超长分页深度分页一般分页查询时可以通过覆盖索引子查询形式优化优化前直接 SELECT *SELECT * FROM t ORDER BY id LIMIT 9000000, 10;优化后覆盖索引子查询SELECT * FROM t, (SELECT id FROM t ORDER BY id LIMIT 9000000, 10) a WHERE t.id a.id;

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑