2014-03-31 26 views
2

在oracle中,如果你有一個在3個不同列上有3個索引的表。有多少個這樣的索引可以從一個表中使用單個SQL語句?在單個SQL查詢中查詢可以從單個表中使用多少個索引?

+1

潛在的所有這些......取決於您選擇的內容以及您要過濾的內容。 –

+0

嗨,謝謝你的回答!我這樣問,因爲我似乎無法讓Oracle在單個表上使用多個索引。我被告知把索引放在任何涉及連接的列上,因爲我正在做一個3表連接,它只使用索引進行一個連接 – bdavies6086

回答

7

有可能所有三個都可以使用。 Oracle不太可能使用全部三種,或者使用全部三種都是有益的,但這是可能的。

Oracle使用所有三個索引的最簡單方法是,如果我們討論的是位圖索引,這些索引被設計爲合併,但實際上只適用於數據倉庫/ DSS情況,而不適用於OLTP系統。 Oracle還可以將「標準」b-樹索引即時轉換爲位圖索引,以便在OLTP系統中執行相同的索引組合,但這通常不是非常有效。

大多數情況下,如果您嘗試創建合適的索引來調整OLTP系統中的查詢,那麼您希望構建單個複合索引,而不是創建單獨的單列索引(如果存在多個列)你想過濾/加入。

+0

非常感謝!使用複合索引解決了所有問題!甚至減少約90%的獲得量謝謝你! :) – bdavies6086