首页 >数据库 >mysql教程 >为什么 MySQL 查询中的高 LIMIT OFFSET 值如此慢?

为什么 MySQL 查询中的高 LIMIT OFFSET 值如此慢?

DDD
DDD原创
2024-12-15 11:14:11668浏览

Why Are High LIMIT OFFSET Values in MySQL Queries So Slow?

较高的 LIMIT OFFSET 对 MySQL 查询性能的影响

当执行带有 LIMIT 子句和大型表的 SELECT 查询时,设置较高的 LIMIT OFFSET偏移值会大大减慢查询的执行时间。当使用带有主键的 ORDER BY 子句时,这种行为尤其明显。

例如,考虑一个名为“large”的表,其中包含超过 1600 万条记录(大小为 2GB)。与具有较高偏移量的查询相比,如下所示的查询:

SELECT * FROM large ORDER BY `id` LIMIT 0, 30

执行速度要快得多,例如:

SELECT * FROM large ORDER BY `id` LIMIT 10000, 30

两个查询检索相同数量的记录(30 ),说明性能差异不是由于ORDER BY操作的开销造成的。

为了优化查询,建议尽量减少使用high限制偏移量。相反,请考虑使用 WHERE 子句根据已知标识符选择记录,这将导致偏移量为零。

例如,如果目标是检索最新 30 行,则可以使用以下查询:

SELECT * FROM large WHERE id > last_known_id LIMIT 0, 30

通过维护最后一个已知 ID (last_known_id) 的记录,这种方法允许查询始终从零偏移量开始,显着改进表演。

以上是为什么 MySQL 查询中的高 LIMIT OFFSET 值如此慢?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn