在資料庫分頁中,確定頁總數對於渲染分頁控制項至關重要。但是,為此目的執行單獨的計數和限制查詢可能效率很低。本文探討了一種在不應用資料庫限制的情況下獲取結果計數的改進技術。
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中文網其他相關文章!