MySQL 中 `LIMIT 100000000, 10` 和 `LIMIT 10` 的执行速度是否相同?

Sherwin.Wei Lv7

MySQL 中 LIMIT 100000000, 10LIMIT 10 的执行速度是否相同?

回答重点

速度差很多,limit 10 快很多!

原因如下:

1)LIMIT 100000000, 10 需要先处理(通常是读取并跳过)前 100000000 条记录,然后再获取到需要的 10 条记录,开销成本很大,因为需要扫描 100000000 数据才能得到后面的 10 条数据,会导致大量的磁盘 I/O。

2)LIMIT 10 从结果集第一个记录开始扫描直接返回前 10 条记录。

通常面对LIMIT 100000000, 10这种大分页的情况,可以先使用条件过滤掉,比如使用主键 ID 来进行范围过滤,然后再 limit 10。

示例代码如下:

1
SELECT * FROM users WHERE id > 100000000 ORDER BY id LIMIT 10;

不过这种方式要运用在有递增关系的列条件上。

扩展知识

Comments
On this page
MySQL 中 `LIMIT 100000000, 10` 和 `LIMIT 10` 的执行速度是否相同?