在使用SQL查询时,对网站进行分页的最有效方法是什么?

源码港湾 毕业设计 1

我正在尝试对 SQL 查询的结果进行分页以在网页上使用。语言和数据库后端是 PHP 和 SQLite。

我正在使用的代码是这样的(页码从 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(*) 查询是否需要在数据库后端进行全表扫描”、“做一些分析自己”之类的问题之一吗?

回复

共1条回复 我来回复
  • 代码海岸
    这个人很懒,什么都没有留下~
    评论

    我选择使用 COUNT(*) 两个查询方法,因为它允许我直接创建指向最后一页的链接,而另一种方法不允许这样做。首先执行计数还可以让我流式传输结果,因此应该可以很好地处理更多数量的记录和更少的内存。

    页面之间的一致性对我来说不是问题。

    0条评论

发表回复

登录后才能评论