2013-04-01 89 views
3

當我刪除unique列(只是唯一的不是主鍵)約束時,Toad會提示我是否要保留索引。Oracle保留唯一約束索引

對我來說合乎邏輯的是刪除索引,但它爲什麼提供保留它?如果我在以後的時間點使同一個色譜柱獨一無二,是否可節省時間? (這是因爲舊索引可能導致衝突,這使我感到困惑)。

+1

請閱讀[http://stackoverflow.com/questions/7521817/oracle-unique-constraint-and-unique-index-question](http://stackoverflow.com/questions/7521817/oracle-unique -constraint-and-unique-index-question) –

回答

3

自10g起,Oracle在ALTER TABLE...DROP CONSTRAINT上引入了「KEEP INDEX」選項。從我讀過的內容來看,它應該是相反的......因爲它應該刪除索引,除非你指定了「KEEP INDEX」。所以我假設你通過GUI菜單刪除了索引。

考慮到這一點,TOAD圖形用戶界面可能是爲了提示你。我想知道你是否真的跑ALTER TABLE...DROP CONSTRAINT如果它仍然會提示你。我打賭「不」。

+0

是直接從編輯器運行查詢不會導致任何提示(對於所有內容) – Cemre

+0

我仍然想知道:爲什麼有人希望在刪除約束後保留索引? – Cemre

+0

我想這將是一種罕見的情況,但我認爲它更多用於移除外鍵約束。這樣,如果您不想強制執行兩個表之間的參照完整性,則可以刪除約束。但是你可能仍然會在應用程序代碼中的一些JOIN/WHERE子句中使用它。 – Aaron