2012-02-13 59 views
19

我現在正在開發Oracle。我有幾個表,我定義了FOREIGN KEY約束。我已經閱讀了這個面向SQL Server的面向對象,而這個面向MySQL的問題,但我對Oracle沒有發現。Oracle是否自動爲FOREIGN KEY列創建二級索引?

所以問題總是相同的:爲了優化查詢性能,對於那些創建FOREIGN KEY約束的列,我是否也必須創建一個顯式的二級索引? Oracle不會自動在FOREIGN KEYED列上創建索引以提高JOIN期間的性能?

我通常執行WHERE子句與這些列進行比較的查詢。

+1

不,它沒有。例如,請參閱[this](http://stackoverflow.com/questions/4127206/do-i-need-to-create-indexes-on-foreign-keys)。 – 2012-02-13 15:20:54

回答

18

不,Oracle不會自動在外鍵列上創建索引,即使在99%的情況下,您可能也應該這樣做。除了幫助查詢外,索引還提高了父表上刪除語句的性能。

+1

雖然這樣的索引需要維護,但有時候最好不要創建它們。就我個人而言,我懷疑它應該默認創建它們,如果您願意,可以讓它們放棄它們,但是Oracle遠不是唯一的行爲方式。 PostgreSQL不會自動爲外鍵關係的引用端創建索引。 – 2012-08-23 04:51:58

相關問題