MySQL 中高 OFFSET 值导致查询性能下降
查询执行缓慢通常归因于过多的 CPU 使用或内存消耗。然而,在某些情况下,即使具有高 LIMIT 偏移量的看似无害的查询也可能导致严重的性能瓶颈。
问题:增加 OFFSET 影响查询速度
考虑一个包含超过 1600 万条记录的大表的场景。像这样的查询:
SELECT * FROM large ORDER BY `id` LIMIT 0, 30
的执行速度比:
SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
两个查询检索相同数量的记录,但后一个查询中的偏移值 10,000 会降低性能。
了解问题
MySQL 在检索数据时使用索引扫描或全表扫描。当应用偏移值时,MySQL 必须扫描表的一部分以检索结果集的起点。随着偏移值的增加,表扫描变得更加广泛,导致执行时间更长。
优化解决方案:避免高 OFFSET 值
要优化此类查询,请避免使用高 OFFSET 值。相反,请考虑使用替代方法:
以上是为什么 MySQL 查询中的高 OFFSET 值如此慢?的详细内容。更多信息请关注PHP中文网其他相关文章!