2011-12-15 68 views
3

我剛剛發現,爲了防止在連接期間進行全表掃描,我需要在我的Rails應用程序中爲我的外鍵添加索引。但我不確定究竟是什麼向外鍵添加索引,它是如何工作的,以及它如何提高性能。如何在外鍵上添加索引?

回答

2

我覺得維基百科很好地總結了索引是什麼和做什麼的。請參閱:http://en.wikipedia.org/wiki/Index_%28database%29

索引可以/可以增加數據庫的大小。他們有效地緩存您的數據的訂單。當您針對外鍵關係編制索引時,您將緩存表格的默認排序,這可以減少需要在表格中搜索的項目的大小,或者可以加快連接速度。

考慮這個人爲的例子:

我有一個名爲EMPLOYEE表:

員工ID |員工代碼|員工姓名

1 | 0003 | Richard
2 | 0002 | Bob
3 | 0008 |蒂姆

我要加入的員工代碼排序列表:

這將意味着沒有索引你有搜索O(N2)的效率。通過員工代碼排序的表格,您可以看到由二叉查找樹給出的搜索效率:http://en.wikipedia.org/wiki/Binary_search_algorithm。有效地,它可以通過猜測它的位置並發現它越來越接近而找到0003,而不是搜索每一行。

我不是說你的數據庫正在使用任何特定的算法,但有一些算法需要按鍵排序數據才能做更有效的搜索。

您可能需要考慮在不再需要索引時刪除索引,因爲它會影響數據庫大小。

0

這與任何其他領域的索引沒有區別。它可能有助於優化器在這些表中找到特定的行。 FK通常用作連接字段,因此它們是在這些情況下進行索引的自然人選。