如何強制Postgres使用指定的索引?
P粉785905797
P粉785905797 2023-08-20 20:42:25
0
1
667
<p>當Postgres堅持執行順序掃描時,我該如何強制它使用索引? </p>
P粉785905797
P粉785905797

全部回覆(1)
P粉281089485

假設您詢問的是許多資料庫中常見的「索引提示」功能,PostgreSQL並沒有提供這樣的功能。這是PostgreSQL團隊做出的有意決定。關於為什麼以及您可以做什麼的很好的概述可以在這裡找到。基本原因是,這是一種效能最佳化的方法,在資料發生變化時往往會導致更多的問題,而PostgreSQL的優化器可以根據統計資料重新評估計劃。換句話說,今天可能是一個好的查詢計劃,但可能不會一直是一個好的查詢計劃,而索引提示則會強制使用特定的查詢計劃。

作為一個非常粗糙的工具,用於測試,您可以使用enable_seqscanenable_indexscan參數。請參閱:

這些不適用於持續的生產使用。如果您在查詢計劃選擇方面遇到問題,您應該查看用於追蹤查詢效能問題的文件。不要只是設定enable_參數然後離開。

除非您有非常充分的理由使用索引,否則Postgres可能會做出正確的選擇。為什麼呢?

  • 對於小表來說,順序掃描更快。
  • 當資料類型不符時,Postgres不使用索引,您可能需要包含適當的轉換。
  • 您的計劃設定可能會導致問題。

也請參閱這篇舊的新聞群組文章

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板