在数据库查询中,在应用 LIMIT 之前确定结果总数对于分页至关重要。目前,一种常见的方法涉及运行查询两次:一次对所有结果进行计数,再次进行限制以检索所需的页面。然而,这种方法效率较低。
幸运的是,PostgreSQL 8.4 引入了更高效的解决方案:窗口函数。通过使用窗口函数,您可以在单个查询中检索总结果计数和有限结果。
SELECT foo , count(*) OVER() AS full_count FROM bar WHERE <some condition> ORDER BY <some col> LIMIT <pagesize> OFFSET <offset>;
请注意,虽然此方法提供了所需的信息,但它的计算成本可能很高,因为所有即使行将被 LIMIT 排除,也必须对其进行处理。
理解序列SELECT 查询中的事件可以帮助理解窗口函数的操作方式。 Postgres 中的操作顺序如下:
除了窗口函数之外,还有其他方法来检索受影响的行计数:
这些方法提供受查询影响的行数,而不是 LIMIT 应用之前的完整计数。
相关资源:
以上是在 PostgreSQL 中应用 LIMIT 之前如何有效获取总行数?的详细内容。更多信息请关注PHP中文网其他相关文章!