我正在尝试将用户提交的信息分页到目录中。起初我有这样的事情: /?page=3&count=20&sort=date
$floor = ($page-1)*$count;
$ceiling = $count;
SELECT * FROM catalog ORDER BY date ASC LIMIT $floor, $ceiling
正如我所读到的,这很糟糕,因为它会计算所有结果,而不是停在极限(地板+天花板)。
现在,我试图通过对页面上的最后一项进行分页来使其更快
/?last_date=2012&count=20&sort=date
$ceiling = $count;
SELECT * FROM catalog WHERE date>$last_date ORDER BY date ASC LIMIT $ceiling
但是,这行不通吗?有些日期将是相同的。为了争论,让我们假设我不能使用更精确的时间戳。例如,按价格排序只会到小数点后 2 位,而且肯定会有重叠。
我可以做些什么来使这项改进发挥作用,还是应该恢复到以前的查询?