我剛剛發現,爲了防止在連接期間進行全表掃描,我需要在我的Rails應用程序中爲我的外鍵添加索引。但我不確定究竟是什麼向外鍵添加索引,它是如何工作的,以及它如何提高性能。如何在外鍵上添加索引?
3
A
回答
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通常用作連接字段,因此它們是在這些情況下進行索引的自然人選。
相關問題
- 1. 索引每列添加外鍵
- 2. 在每個外鍵上添加索引的腳本?
- 3. 如何在hstore列中的某個鍵上添加索引?
- 4. 索引外鍵
- 5. 如何添加外鍵(MySQL)
- 6. MySQL:如何添加外鍵
- 7. 如何添加外鍵MySQL
- 8. 如何添加外鍵?
- 9. 如何向索引添加索引
- 10. 添加外鍵上多列
- 11. MySql外鍵索引
- 12. 外鍵和索引
- 13. 索引外鍵列
- 14. 外鍵和索引
- 15. 值得在列上添加索引只是爲了讓它們成爲外鍵?
- 16. 如何在mvc5中的AspNetUsers中添加外鍵引用
- 17. PostgreSQL:如何索引所有外鍵?
- 18. 如何實現在tableView上添加索引搜索視圖?
- 19. 如何在SQLite中添加「KEY」索引不是「主鍵」的列
- 20. 軌如何添加在:包括了多個索引鍵關聯
- 21. 在視圖上添加外鍵約束
- 22. 添加沒有外鍵約束的索引性能提升
- 23. 爲什麼InnoDB爲外鍵列添加索引
- 24. 實體框架代碼第一個外鍵添加索引
- 25. 上鍵索引
- 26. 如何在postgresql的繼承表上添加外鍵約束?
- 27. 如何在WAMPserver上的MySQL中添加外鍵?
- 28. 在mysql中添加外鍵和引用鍵時遇到錯誤
- 29. mysql在varchar上添加索引(500)
- 30. Rails遷移引用一個User,如何添加這個外鍵?