在数据库分页中,确定页面总数对于渲染分页控件至关重要。但是,为此目的执行单独的计数和限制查询可能效率很低。本文探讨了一种在不应用数据库限制的情况下获取结果计数的改进技术。
PostgreSQL 版本 8.4 及更高版本引入了窗口函数,支持在分区子集上计算聚合函数数据。这使我们能够确定总计数并在单个查询中检索有限的结果。
SELECT foo, COUNT(*) OVER() AS full_count FROM bar WHERE <some condition> ORDER BY <some col> LIMIT <pagesize> OFFSET <offset>;
但是,此方法可能会产生额外的性能开销,因为它需要计算所有符合条件的行,可能会影响大量的性能表或 OFFSET 值接近总行数。
在性能受到关注的情况下,替代方案可以采用独立于 OFFSET 和 LIMIT 应用程序的方法来获取受影响行的最终计数。 Postgres 内部簿记跟踪此信息,某些客户端可以访问这些信息。
以上是如何在应用 LIMIT 之前高效检索 PostgreSQL 中的总结果计数?的详细内容。更多信息请关注PHP中文网其他相关文章!