【发布时间】:2010-09-08 08:08:15
【问题描述】:
我正在尝试对 SQL 查询的结果进行分页以在网页上使用。语言和数据库后端是 PHP 和 SQLite。
我使用的代码是这样的(页码从 0 开始)
http://example.com/table?page=0
page = request(page)
per = 10 // results per page
offset = page * per
// take one extra record so we know if a next link is needed
resultset = query(select columns from table where conditions limit offset, per + 1)
if(page > 0) show a previous link
if(count(resultset) > per) show a next link
unset(resultset[per])
display results
还有比这更有效的分页方法吗?
我在当前方法中看到的一个问题是,在开始显示它们之前,我必须将所有 10 个(或许多)结果存储在内存中。我这样做是因为 PDO 不保证行数可用。
发出COUNT(*) 查询以了解存在多少行,然后将结果流式传输到浏览器是否更有效?
这是“这取决于你的表的大小,以及count(*) 查询是否需要在数据库后端进行全表扫描”、“做一些分析自己”之类的问题之一吗?
【问题讨论】: