我有一堆记录,我想通过反向修改日期进行分页。据我所知,使用简单的查询拉出相同的记录子集,然后按日期排序。
这样的事情:
SELECT * FROM items WHERE status='1' ORDER BY modified_date DESC LIMIT start,count
索引会帮助我吗?或者我将不得不想办法编写一些代码,或许添加一个以某种方式以相反的顺序跟踪modified_date的列?
答案 0 :(得分:1)
(status,modified_date)上的索引可能有所帮助。请参阅indexes dos and donts。
答案 1 :(得分:1)
此查询对我来说很有用。它执行以下操作:
status = 1
modified_date DESC
count
start
条记录
醇>
因此,如果您需要显示第一页,则应设置start=0
。对于第二页,它将是start=count
,第三页为start=2*count
,依此类推。
或者你有这方面的性能问题吗?
答案 2 :(得分:0)
您可以添加包含TIMESTAMP
的列,然后在其上设置自动更新属性,以便正确更新。最后,为此列创建索引。您的查询将如下所示:
SELECT *
FROM items
WHERE status='1'
ORDER BY 'timestamp' DESC
LIMIT start,count
答案 3 :(得分:0)
它是一个黑客,我没有尝试过,因为我无法重现你的问题,可能效果不佳,但这可能适合你
SELECT *
FROM (SELECT *
FROM items
WHERE status = '1'
ORDER BY modified_date desc ) t
LIMIT START, COUNT