首页 > 数据库 > mysql教程 > 为什么具有大 LIMIT 偏移量的 MySQL 查询如此慢?

为什么具有大 LIMIT 偏移量的 MySQL 查询如此慢?

Linda Hamilton
发布: 2024-12-13 01:17:09
原创
558 人浏览过

Why Are MySQL Queries with Large LIMIT Offsets So Slow?

较高 LIMIT 偏移量对 MySQL 查询速度的影响

当结合 ORDER BY 查询 LIMIT 偏移量不断增加的大型 MySQL 表时,用户可能会遇到查询速度明显下降的情况。当表超过 1600 万条记录或大小约为 2GB 时,这一点尤其明显。

例如,以下具有较小偏移量的查询的执行速度明显快于具有较大偏移量的查询:

SELECT * FROM large ORDER BY `id` LIMIT 0, 30
登录后复制
SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
登录后复制

虽然两个查询都只检索 30 行,但后者花费的时间要长得多,尽管 ORDER 的开销可以忽略不计BY.

要优化此场景,请考虑使用替代方法:

  1. 存储所提取的一组行的最后一个 ID(例如,lastId = 530)。
  2. 修改查询以包含条件 WHERE id > lastId.
SELECT * FROM large WHERE `id` > lastId LIMIT 0, 30
登录后复制

通过始终保持零偏移,即使在迭代中获取大量数据,查询也将始终以最佳速度执行。

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

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