为什么MYSQL更高的LIMIT偏移量会减慢查询速度?

简而言之,场景:一个拥有超过1600万条记录[2GB大小]的表。当使用ORDER BY * primary_key

*时,SELECT的LIMIT偏移量越高,查询速度就越慢

所以

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

花费不到

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

那只订购30条记录,并且无论如何都相同。因此,这不是ORDER BY的开销。

现在,当获取最新的30行时,大约需要180秒。如何优化该简单查询?

回答:

通常,较高的偏移量会使查询速度变慢,因为查询需要从第一OFFSET +

LIMIT条记录中扣除(并且只提取其中的一条记录LIMIT)。该值越高,查询运行的时间越长。

查询无法直接进行,OFFSET因为,第一,记录的长度可能不同,第二,删除的记录可能会有间隙。它需要检查并计数其途中的每条记录。

假设idPRIMARY KEY一个的MyISAM表,你可以使用这一招加快步伐:

SELECT  t.*

FROM (

SELECT id

FROM mytable

ORDER BY

id

LIMIT 10000, 30

) q

JOIN mytable t

ON t.id = q.id

看到这篇文章:

以上是 为什么MYSQL更高的LIMIT偏移量会减慢查询速度? 的全部内容, 来源链接: utcz.com/qa/413697.html

回到顶部