Postgresql
如何在 PostgreSQL 上僅使用外鍵索引優化 count(*)
我有一個 Web 應用程序,它廣泛使用連接到數據庫的數據表來獲取數據。
但問題是,它總是需要先計算總結果,然後才能通過
limit
和offset
是否有任何類型的特殊索引或某些配置始終強制僅通過索引計算計數而不依賴最終表?因為現在,它似乎在查詢計數時忽略了索引。
如果表最近被清理過,PostgreSQL 只能使用索引來計算行數,以便在可見性映射中將大多數表塊標記為“全部可見”。否則它必須檢查表以檢查行是否可見,然后索引掃描更有效。
我認為解決方案不是計算行數。要進行便宜的估算,請使用
pg_class.reltuples
. 有關該主題的更深入處理,請閱讀我的部落格。