SQL-在大型表上选择最后一行的更快,更省心的方法是什么?

时间:2019-01-03 11:04:27

标签: mysql performance

我有一个很大的消息表。我想要提高性能和页面加载时间的方法是获取最新发布的消息,例如20条最新消息。

当用户向下滚动时,由于有了JS,之前的20条消息将添加到DOM中。

因此,如果我总共有40条消息,则会显示40至20条消息。用户将向下滚动,然后将20到0条消息添加到DOM。

问题是,如果我存储已加载邮件的最低ID并使用类似这样的查询:

SELECT * FROM messages ORDER BY id DESC LIMIT 20,20 (<= is the lowest offset of loaded messages)

我读到MySQL首先将获取表的每一行,然后仅返回我想要的条目,如果我的消息表包含500 000条目,我想这将花费一些时间。

最有效,最快的方法是什么?

1 个答案:

答案 0 :(得分:1)

因此,基本上,您要执行的操作称为“延迟加载”,因为它只会在需要时才加载记录。

最好的方法是发送已加载记录的最后一个ID。假设它是1988年。

然后您可以像

一样进行查询
SELECT * FROM messages WHERE id < 1988 ORDER BY id DESC LIMIT 20

下一个查询可能看起来像

SELECT * FROM messages WHERE id < 1968 ORDER BY id DESC LIMIT 20

以此类推