2014-11-25 172 views
0

我有表部門,有兩列(dept_ID和dept_name) 我的另一個表是登錄,我創建一個外鍵的列dept_name引用表部門的dept_name。所以我創建了一個名爲index_department的索引,現在在登錄表中,我想爲列eadd創建另一個外鍵,它將引用名爲info_table的DIFFERENT表。我應該爲每個外鍵創建索引嗎?

我應該爲第二個外鍵創建另一個索引嗎?

另一種情況下,我想創建一個名爲info_table的dept_name列。我可以使用相同的索引'index_department'嗎?

+1

是否有任何理由爲什麼引用'department.dept_name'而不是'department.id'? – 2014-11-25 14:06:34

+0

您可以創建索引以滿足查詢的性能要求。你想運行哪些查詢可能會使用這樣的索引?你可以用例子編輯你的問題。 – 2014-11-25 14:09:22

+0

外鍵總是索引。 – 2014-11-25 14:16:52

回答

2

一般的答案是「這取決於」。

由於@ gordon-Linoff評論說:「您創建索引以滿足查詢的性能要求。」

索引佔用空間並將處理時間視爲必須維護。因此,任何給定指數的情況取決於成本和使用之間的折衷。例如,如果您的數據很少發生變化,但是您會查看很多,您將更願意擁有更多索引。

我的教育猜測是,在你可能工作的規模上,你確實需要所有外鍵上的索引。

具體在mysql中,你似乎得到的索引是你正式添加FK約束。這裏討論does mysql index foreign key columns automatically

我正式說,因爲你可以有隱含的外鍵關係而不需要實際聲明/強制約束。人們有時會這樣做以避免檢查/強制約束的成本。風險在於違反參照完整性的更新。但我正在漂移到一條切線。

作爲一個方面說明,此does a foreign key automatically create an index

0

在MySQL(至少5.6,這是我現在用的)一些相關的討論,指數將自動爲外鍵創建。

相關問題