问题描述
|
我有一堆记录要按反向修改日期进行分页。据我所知,使用简单的查询会提取相同的记录子集,然后仅按日期对记录进行排序。
像这样:
SELECT * FROM items WHERE status=\'1\' ORDER BY modified_date DESC LIMIT start,count
索引对我有帮助吗?还是我将不得不找出某种方法来编写此代码,或者添加一列以某种相反的方式跟踪Modifyed_date?
解决方法
索引(状态,modified_date)可能会有所帮助。请参阅索引dos和dons。
, 这个查询对我来说很好。它执行以下操作:
查找带有
status = 1
的记录
以modified_date DESC
订购
从start
返回count
条记录
因此,如果需要显示第一页,则应设置start=0
。第二页是ll6ѭ,第三页是start=2*count
,依此类推。
还是与此相关的性能问题?
, 它是一个hack,我没有尝试过,因为我无法重现您的问题,并且可能无法很好地运行,但这可能对您有用
SELECT *
FROM (SELECT *
FROM items
WHERE status = \'1\'
ORDER BY modified_date desc ) t
LIMIT START,COUNT
, 您可以添加一个包含“ 9”的列,然后在其上设置auto-update属性,以便对其进行正确更新。最后,为该列创建一个索引。您的查询将如下所示:
SELECT *
FROM items
WHERE status=\'1\'
ORDER BY \'timestamp\' DESC
LIMIT start,count