在資料庫查詢中,在應用 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 中的操作順序如下:
以上是在 PostgreSQL 中應用 LIMIT 之前如何有效取得總行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!