【发布时间】:2019-02-07 03:15:13
【问题描述】:
我有一个带有 sqlite 3 的 PHP (5.5) webapp。它有一个日志页面(将来可能有 10k 到 100k 个日志)。我正在为这些日志使用this way of paging。 我正在使用的 sqlite 查询:
SELECT *
FROM Logs
WHERE date > [input epoch long]
ORDER BY date DESC
LIMIT 100;
日志模型是这样的:
"id": [int increased by sqlite]
"date":[entry date, epoch long like: "1533595828"]
+ other not relevant data for this issue
理想情况下,我希望有一个喜欢的页面:上一页 | 1 | 2 | 3 | 4 |接下来,这个接缝很硬。所以上一页和下一页处理是可以接受的。
对于下一页处理,我使用:日期> [它在初始化时返回的最后一条记录]。这行得通。巴德要回去,我需要记录第一次约会。在我多次返回后,这变得很乱。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
您将后退视为前进,除了当前显示的最后一个条目之后的前 100 行,您使用第一个条目之前的 100 个条目。 (如果您可以有多个具有相同时间戳的行,请使用该链接中也提到的两列比较)
-
另一种选择是有一个表格来保存每个页面的起始行,但这最适用于静态或大部分静态数据 - 每次添加条目时都必须检查是否有新的页面启动并添加到索引(如果是)。不过,它确实可以让您有效地跳转到任意页面。