2009-11-12 343 views
3

我正在使用phpMyAdmin。爲了使用InnoDB設置外鍵約束(在Structure選項卡的「Relation View」鏈接下),似乎需要爲要添加約束的字段添加索引。這顯然會影響表上插入/更新的性能,特別是如果我想添加幾個約束。是否可以在InnoDB中指定外鍵約束或關係完整性,而無需爲必填字段創建索引?MySQL InnoDB總是需要每個外鍵約束的索引嗎?

非常感謝 JS,倫敦

回答

7

MySQL reference manual

InnoDB的要求對外國 鍵索引和所以 外鍵檢查可以很快,而不是 需要表掃描。在 引用表中,必須有 索引,其中外鍵列 被列爲 相同順序的第一列。如果它不存在,則在引用表上自動創建 。 (這是 相反,一些老的版本,在 哪些索引必須創建 明示或國外 鍵約束的創建會失敗。)

1

外鍵contraint是指1個鍵到另一個。外鍵也是一個索引。
所以是的,你需要索引collumn(無論是與唯一或與外鍵)在外鍵約束中使用它們。

有3種可用的指標:
- 主鍵
- 唯一索引
- 非唯一索引

+0

謝謝您的答覆。 –