2011-06-03 71 views
10

我剛剛創建了我自己的第一個mySQL表(除了使用Joomla,Wordpress等),並且我是MS SQL開發人員多年,但通常我可以在MS SQL中輕鬆創建外鍵,但遇到了這裏的困難或缺乏知識。外鍵在mySQL中必須是索引?

這裏是我的表:

用戶

  1. USER_ID int主AUTO_INCREMENT
  2. 用戶名VARCHAR(20)
  3. 密碼VARCHAR(20)

帖子

  1. POST_ID初級AUTO_INCREMENT
  2. 標題爲varchar(100)
  3. 消息文本
  4. 的user_id INT

當我嘗試添加一個外鍵,用戶是指posts->user_id,我在mySQL面板的選項列表Relation_view窗口中看不到posts->user_id選項。

我想知道是否應該將posts->user_id定義爲Index什麼的?如果是這樣,爲什麼?

+0

索引對外鍵定義沒有影響 - 可能它是您使用的UI中的一個錯誤。你用什麼軟件來做到這一點? – 2011-06-03 17:36:44

+0

我正在使用phpMyAdmin來導航和編輯我的數據庫.. – Tarik 2011-06-03 17:37:37

+0

並且在我將它們聲明爲索引後,我開始在列表中看到它們。 – Tarik 2011-06-03 17:38:06

回答

2

the documentation

InnoDB的要求對外國 鍵索引和參考鍵,以便 外鍵檢查可以快而不是 需要表掃描。在 引用表中,必須有 索引,其中外鍵列 被列爲 相同順序的第一列。

4

MySQL Reference Manual

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

與SQL Server不同,它不需要將FKs編入索引......但是,我所看到的建議表明,即使不需要,您幾乎總是將索引編制爲FK。