2011-08-26 77 views
1

我試圖針對從6個表構建的Oracle視圖優化一些傳統SQL SP,每個表由一個數字ID相同的字段連接而成。視圖中的一些表格有一個僅僅是這個ID字段的索引,而其他的則沒有。Oracle索引和SP性能

如果我只在視圖的其餘表中使用此字段創建索引,然後使用此字段作爲唯一參數執行實際選擇查詢,是否會顯着提高性能?如果必要,我可以發佈s.proc,因爲SP中可能存在其他缺陷,這些缺陷可能無法通過索引單獨解決。有問題的查詢大約需要6秒才能返回1行,沒有一個表包含大量記錄,無論如何不會超過100,000條記錄。

由於提前,

斯科特

+1

ID字段是索引中的第一個字段嗎?索引是否聚集?您是從視圖中選擇所有行還是基於ID選擇少量行? – Andomar

+0

ID字段是存在的所有索引中的第一個字段,就像我說的一對錶在這個字段上缺少一個索引。它是聚集的,我不知道。我無法在idx創建中的任何位置(使用PL/SQL開發人員)看到對羣集或非羣集的引用。查詢應該只能根據提供的ID返回1行。 – Scott

+0

斯科特,你能提供查詢生成的解釋計劃嗎?這將有助於爲您調整查詢提供更好的建議。 – Ollie

回答

0

確保在視圖中的每個表具有與ID字段開始的索引。只要ID字段是第一個,索引就可以佔用更多的字段。

如果這不能幫助表現,請發佈選擇語句和解釋計劃。

0

如果ID字段是索引(或唯一列)中的第一列,那麼如果您要返回少量的行,那麼將索引添加到那些需要它們的剩餘表的ID列中將會改進查詢。