为什么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
因为,第一,记录的长度可能不同,第二,删除的记录可能会有间隙。它需要检查并计数其途中的每条记录。
假设id
是PRIMARY 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