我有一个很大的消息表。我想要提高性能和页面加载时间的方法是获取最新发布的消息,例如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条目,我想这将花费一些时间。
最有效,最快的方法是什么?
答案 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
以此类推