2009-12-20 55 views
0

我正在使用mySQL 5.1,想知道是否有必要在FK關係中定義它之後在列上添加CREATE INDEX語法。常識告訴我,如果列是一個鍵(外部或其他),那麼它需要索引 - 但你永遠不知道...是否創建一個FK自動索引列?

我是否必須明確地創建一個索引在我的FK - 或創建FK隱式地在列上創建索引?

回答

7

引述MySQL手冊此頁:13.6.4.4. FOREIGN KEY Constraints

InnoDB的要求對外國 鍵和參考鍵索引,使 外鍵檢查可以快速,而不是 需要一個表掃描。
在 引用表中,必須有 索引,其中外鍵列 被列爲 相同順序的第一列。
如果索引表 不存在,則自動創建該索引 。

+1

MySQL在這方面是不尋常的,雖然我希望其他產品也會這樣做。 – 2009-12-20 16:44:14

+0

+1一個有趣的效果是,在MyISAM(不支持外鍵)上,聲明一個外鍵仍然會創建一個索引。 – 2009-12-20 17:04:18

+0

它不需要* unique *索引?(!) – 2009-12-20 17:28:53

相關問題