按修改日期排序时的SQL分页

时间:2011-06-10 00:43:32

标签: sql pagination

我有一堆记录,我想通过反向修改日期进行分页。据我所知,使用简单的查询拉出相同的记录子集,然后按日期排序。

这样的事情:

SELECT * FROM items WHERE status='1' ORDER BY modified_date DESC LIMIT start,count

索引会帮助我吗?或者我将不得不想办法编写一些代码,或许添加一个以某种方式以相反的顺序跟踪modified_date的列?

4 个答案:

答案 0 :(得分:1)

(status,modified_date)上的索引可能有所帮助。请参阅indexes dos and donts

答案 1 :(得分:1)

此查询对我来说很有用。它执行以下操作:

  1. 使用status = 1
  2. 查找记录
  3. modified_date DESC
  4. 订购
  5. count
  6. 开始返回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 
相关问题