2011-06-11 65 views
1

我知道外鍵應該被編入索引,但是我找不到原因,或者至少爲什麼有些DBMS會自動獲取而其他人沒有。爲什麼fk在某些DBMS中自動生成索引?

有人可以幫我澄清一下,或者給出一些DBMS的例子,它們是否爲fks創建索引?

謝謝。

回答

1

對引用列的每次更新或刪除都要求數據庫檢查所有引用列是否存在完整性違規。這些檢查中的每一個都需要檢查引用列以查看它們是否正在使用即將被更改或刪除的值。

因此驗證FK的完整性需要對引用它的列進行大量查詢。將索引添加到這些列使得完整性檢查更加快速。如果引用列上沒有索引,那麼更改引用列(或刪除FK指向它的行)需要在引用它的每個表上執行表掃描。表掃描不是你的朋友,但FK肯定是。

+0

非常感謝您的反饋。我確實知道,索引fks通常是一件好事,但我永遠無法找到......至少簡單直接的原因。 – neverMind 2011-06-12 23:05:36

1

由於外鍵表示數據之間的關係,並且在選擇結果時有望用於槓桿作用,因此對它們進行索引以提高操作速度是有意義的。

它們是否被你的數據庫引擎自動索引,實際上只是一個實現的決定。

相關問題