一、LIMIT的底层原理
1. LIMIT语法与基本行为
在MySQL中,LIMIT子句用于限制查询结果的返回行数,常见形式为:
SELECT * FROM table LIMIT offset, count;
或:
SELECT * FROM table LIMIT count OFFSET offset;
其逻辑分为两步:
-
数据扫描:根据查询条件逐行扫描数据。
-
过滤结果:跳过前
offset行,返回接下来的count行。
2. 执行过程分析
-
无索引覆盖:若查询未命中索引,MySQL需要执行全表扫描,逐行跳过
offset行,时间复杂度为O(offset + count)。 -
索引覆盖:若查询可通过索引覆盖(如仅查询索引字段),则通过索引树快速定位起始点,时间复杂度可降至
O(count)。
3. 性能瓶颈
当offset值极大时(如LIMIT 1000000, 10):
-
MySQL需遍历并丢弃前100万行数据。
-
即使使用索引,仍需通过回表操作获取完整行数据。
-
磁盘I/O和CPU负载显著增加,导致响应时间线性增长。
MySQL 8.0 Limit原理与大分页优化

最低0.47元/天 解锁文章
3826

被折叠的 条评论
为什么被折叠?



