大家好,我是BiggerBoy。在之前的文章《MySQL 深分页性能优化终极指南:告别慢查询的 5 大方案》中,我们总结了MySQL深分页的五大解决方案(延迟关联、游标分页、预计算、索引覆盖索引、业务妥协)。今天,我们聚焦其中最经典的延迟关联(Deferred Join),深入剖析它的原理、适用场景和性能极限,让你彻底掌握这个“低调的优化杀手”! 假设有一个订单表 MySQL的真实操作: 性能瓶颈: 优化后的SQL: 分两步走: 本质:将 “先拿数据再筛选” 变为 “先筛选再拿数据”,避免无效数据搬运! 性能差距:130倍! 执行 关键点: 索引设计:联合索引 引言:从“知其然”到“知其所以然”
一、延迟关联的本质:少干活,多偷懒
1.1 传统分页的“苦力模式”
orders
(500万数据),执行以下深分页查询:SELECT * FROM orders ORDER BY create_time DESC LIMIT 100000, 10;
create_time
有索引,先扫描索引树,找到前 100010 行的create_time
值。SELECT *
)。1.2 延迟关联的“聪明模式”
SELECT * FROM orders
INNER JOIN (
SELECT id FROM orders
ORDER BY create_time DESC
LIMIT 100000, 10
) AS tmp USING(id); id
,利用覆盖索引(create_time + id
)直接完成排序和筛选,无需回表。id
。id
回表查询,直接走主键索引,10次快速磁盘I/O。二、性能提升的关键:四个核心优化点
2.1 覆盖索引:拒绝回表
id
、create_time
)全部在某个二级索引中,MySQL可直接通过索引完成查询,无需访问主键索引。idx_create_time_id(create_time, id)
。EXPLAIN
结果中会出现 Using index
(索引覆盖)。2.2 主键索引:精准定位
id
(主键)访问数据,主键索引的B+树高度最低,查询速度最快。2.3 减少排序:索引的有序性
ORDER BY
字段有索引,MySQL直接按索引顺序读取数据,无需内存排序(Filesort)。2.4 数据传输:化繁为简
id
到外层查询,而非100010行完整数据,减少临时表和网络传输开销。三、延迟关联的“性能天花板”
3.1 极限测试:100万Offset的对比
-- 传统分页(自杀式)
SELECT * FROM orders ORDERBY create_time LIMIT 1000000, 10;
-- 平均耗时:15.8秒
-- 延迟关联(优雅版)
SELECT * FROM orders
INNERJOIN (
SELECT id FROM orders
ORDERBY create_time LIMIT 1000000, 10
) AS tmp USING(id);
-- 平均耗时:0.12秒 3.2 性能公式
耗时 ≈ (Offset + Limit) * 单次回表时间
耗时 ≈ Limit * 单次回表时间
四、延迟关联的“使用禁区”
4.1 不适用场景
ORDER BY
字段无索引,子查询需全表扫描 + 内存排序,性能可能更差。4.2 如何判断是否生效?
EXPLAIN
:Extra
列应有 Using index
;type
应为 eq_ref
(主键查询)。五、实战进阶:复杂查询如何用延迟关联?
5.1 带WHERE条件的分页
SELECT *FROM orders
INNERJOIN (
SELECT id FROM orders
WHERE user_id =123 -- 过滤条件
ORDERBY create_time DESC
LIMIT 100000, 10
) AS tmp USING(id); user_id
和create_time
建立联合索引 idx_user_create_time(user_id, create_time, id)
。user_id
)和排序字段(create_time
)都在索引中。5.2 多字段排序
SELECT * FROM orders
INNER JOIN (
SELECT id FROM orders
ORDER BY create_time DESC, id DESC -- 多字段排序
LIMIT 100000, 10
) AS tmp USING(id); idx_create_time_id(create_time, id)
。六、总结:延迟关联的哲学
id
实现覆盖;

優(yōu)網(wǎng)科技秉承"專業(yè)團(tuán)隊、品質(zhì)服務(wù)" 的經(jīng)營理念,誠信務(wù)實的服務(wù)了近萬家客戶,成為眾多世界500強(qiáng)、集團(tuán)和上市公司的長期合作伙伴!
優(yōu)網(wǎng)科技成立于2001年,擅長網(wǎng)站建設(shè)、網(wǎng)站與各類業(yè)務(wù)系統(tǒng)深度整合,致力于提供完善的企業(yè)互聯(lián)網(wǎng)解決方案。優(yōu)網(wǎng)科技提供PC端網(wǎng)站建設(shè)(品牌展示型、官方門戶型、營銷商務(wù)型、電子商務(wù)型、信息門戶型、微信小程序定制開發(fā)、移動端應(yīng)用(手機(jī)站、APP開發(fā))、微信定制開發(fā)(微信官網(wǎng)、微信商城、企業(yè)微信)等一系列互聯(lián)網(wǎng)應(yīng)用服務(wù)。