0

对于新闻报道应用程序,例如 Facebook 中的应用程序,我们看到当我们进一步滚动时,会出现较旧的新闻。现在,新闻肯定会在它们出现时被插入到表中,因此正常的选择总是会更早地检索较旧的记录,而这里会发生相反的情况。我假设它的完成方式是当用户向下滚动到最后时,FB 发送一个 Ajax 请求,其中包含当前出现在股票行情中的最后一个新闻 id 的 id(在 Firebug 中无法确定,FB 发送负载数据!),PHP 查询数据库,根据时间列翻转结果集,然后提取具有收到 id 的记录之后的接下来的 5 条记录。现在这样的表很大,所以频繁地翻转它们肯定会对数据库造成沉重的负担。那么有什么方法可以在不翻转的情况下实现这一点?

4

3 回答 3

3

如果您没有在查询中指定 ORDER BY 变量,则不能保证 MySQL 按插入顺序返回记录。有关更多详细信息,请参阅此答案。如果您想确保获得最新的行,则需要有一个插入时间列并对其进行排序。

如果您按 排序time desc,那么您可以使用通常的 LIMIT 子句仅请求前 5 条记录(即最近的 5 条),或某个 ID 之后的 5 条最近的记录,等等。

于 2012-07-27T18:49:23.390 回答
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 
}     

也就是说,没有理由不能从最后一个索引访问数组。

于 2012-07-27T18:48:40.300 回答
1

在您的 sql 语句中指定order by以首先获取最旧的。并做得到where id > last_id之后的行last_id

于 2012-07-27T18:51:27.913 回答