2014-01-06 61 views
0

正如我們所知,在mysql數據庫中有一個叫做「force index」的命令。所以這可以強制mysql使用索引,無論優化器是否喜歡。我的困惑是,如何在postgresql上做同樣的事情? 任何答覆將不勝感激。我可以控制postgresql使用專用索引嗎?

+1

如果你還不知道,你會意識到*如何做到這一點,你知道的機會*當*做到這一點很小〜對不對? – cHao

回答

0

在Postgres中沒有索引提示,核心開發人員沒有興趣添加任何。首選的方法是修復查詢計劃器,當它做一些愚蠢的事情時。

如果它寧願在你的查詢序列掃描,這可能意味着:

  • 一個序列掃描真是再好不過了。要麼是因爲你正在抓取你的大部分表格,要麼是因爲你在整個地方抓取行。
  • 你沒有在你的桌子上運行分析;分析表來修復。
  • 由於樣本量不足,表格中收集的統計信息不準確;修改表/設置統計信息以解決問題。
  • 您已經遇到了最新版本的Postgres中修復的計劃錯誤,或者需要向pg-peformance或pg-hacker列表報告;升級和/或報告錯誤進行修復。

更多的,往往不是第一的上述應用,它真的便宜做一個序列掃描。想想這樣:想象你是郵差。按照發布的順序傳遞信件,在這個過程中來回走過城鎮,還是按順序瀏覽每條街道時,a)您總共可以發送幾封信,而b)您有每個街道提供幾封信?使用索引與seq掃描的理性意味着類似的東西。

相關問題