对于新闻自动收录器应用程序,例如Facebook中的应用程序,我们看到随着我们进一步滚动,出现旧的新闻。现在肯定会在新闻发生时将新闻插入到表中,因此正常选择总是会提前检索旧记录,而这里则会发生相反的情况。我假设它的完成方式是当用户向下滚动到最后时,FB发送一个Ajax请求,其中包含当前在ticker中出现的最后一个news-id的id(在Firebug中无法确定,FB发送加载数据!),PHP查询数据库,根据时间列翻转结果集,然后在接收到的ID之后提取接下来的5条记录。现在这样的表格很大,所以经常翻转它们肯定会对数据库造成沉重的负担。那么有没有办法在不翻转的情况下实现这一目标?
答案 0 :(得分:3)
如果未在查询中指定ORDER BY变量,则无法保证MySQL按插入顺序返回记录。有关详细信息,请参阅this answer。如果您想确保获得最新的行,则需要有一个插入时间列并对其进行排序。
如果你在time desc
上排序,那么你可以使用通常的LIMIT子句来请求前5个记录(即最近的5个记录),或者在某个ID之后最近的5个记录,等等
答案 1 :(得分:1)
是的,请记住,我们正在非常抽象地谈论这个问题。如果您想以相反的顺序访问索引集合。
$collection = array(); // Filled through request to server
....
for ($i = sizeof($collection)-1; $i >= 0; $i--) {
echo $collection[$i]
.... // execute some action based on access to
}
也就是说,没有理由不能从最后一个索引访问数组。
答案 2 :(得分:1)
在sql语句中指定order by
以获取最早的第一个。并执行where id > last_id
以获取last_id