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

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

DDD
发布: 2024-12-15 11:14:11
原创
667 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板