我想分页SQL查询的结果在网页上使用。语言和数据库后端是PHP和SQLite。SQL分页
的代码我使用的作品像这样的东西(页编号从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不能保证rowcount可用。
发出COUNT(*)查询以了解有多少行存在,然后将结果流式传输到浏览器会更高效吗?
这是“这取决于你的表的大小,以及计数(*)查询是否需要在数据库后端进行全表扫描”,“做一些分析自己”类问题?
...只要不过滤没有索引的列(WHERE)并且不使用连接:) – BlaM 2008-09-10 07:53:04