Mysql

外鍵是否在 MySQL 中自動建立索引?

  • August 26, 2020

在 MySQL 的 InnoDB 中創建表時,是否需要為外鍵創建索引?

FOREIGN KEY除非已經存在明顯足夠的索引,否則將為每個定義生成一個索引。

需要索引來防止全表掃描,以驗證插入的行是否沒有指向任何地方的鍵。

要使索引可用,最左邊的列必須與 FK 定義匹配。選擇性無關緊要。

MySQL* 中不會自動索引外鍵。如果您應該編制索引,答案總是:“視情況而定”。

如果您打算主要基於該列進行搜尋,那麼它很可能應該構成該表主鍵的第一部分,並且不需要額外的索引。

如果該列的值不是特別有選擇性,則添加索引不會提高性能,因為仍需要進行表掃描。

因此,一如既往地進行測試和驗證。

*這取決於您期望在哪裡創建外鍵,在具有 FK 約束的表或該約束引用的表上。大多數 RDBM 遵循關係模型,您只能創建對另一個表中的主鍵或候選鍵的 FK 引用(實際上,索引已經存在)。MySQL 沒有這個限制,並且會自動在引用的列上創建一個索引(或者如果引用的列包含該索引的開頭,則使用現有索引)。

引用自:https://dba.stackexchange.com/questions/274407