如果我有表裏面Foo
列a
,我創建一個新表Bar
與列b
這是一個外鍵Foo.a
,自動編入索引的Bar
列b
,或必須我還是當我在Bar.b
創建索引想要高效搜索Bar
中的所有行與b = 1
?創建外鍵是否意味着創建索引?
(如果有問題,我正在使用SQLite。)
如果我有表裏面Foo
列a
,我創建一個新表Bar
與列b
這是一個外鍵Foo.a
,自動編入索引的Bar
列b
,或必須我還是當我在Bar.b
創建索引想要高效搜索Bar
中的所有行與b = 1
?創建外鍵是否意味着創建索引?
(如果有問題,我正在使用SQLite。)
外鍵僅用於'force exists relationships between tables',但不會根據其相關列索引自動編制索引。索引Foo.a
將加速在Bar.b
上的插入/更新,而索引Bar.b
將加速在Bar.b
上的選擇。
您必須自己創建索引。至少我知道沒有自動執行它的DBMS。
我誤解了這個問題。我以爲他在問是否會在FK的目標上創建一個索引。 :)(或者現在我再讀一次,也許我沒有誤讀它......我不知道,我應該去睡覺。無論如何,MySQL做這件事並不意味着它是必需的,只是意味着它是一個小方面的說明[僅限InnoDB,這是因爲MyISAM不支持外鍵]) – Corbin 2013-02-26 22:03:13