我有表:產品,子類和類別。分類有許多Sub_Categories,Sub_Categories belongs_to分類並且有許多產品和產品屬於sub_categories。我的產品表有一個sub_category_id;我的sub_category表有一個category_id。索引這些表以提高應用加載時間的最有效方法是什麼?數據庫索引與Rails應用程序
0
A
回答
1
沒有任何更多的信息,更好的訪問時間爲您查詢,您將這些指標:
categories on id
subcategories on id
subcategories on category_id
product on id
product on sub_category_id
1
您也可以使用預先加載。例如,如果您將需要一個類別和幾個子類別,請使用更少的db查詢加載所有內容
Category.includes(:sub_categories).find(:id)
。見http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations。
0
Anil的回答是正確的,但是當他透露時,你的問題太模糊了。我建議打開查詢日誌記錄,並查看哪些查詢在頁面加載中佔用時間。然後接受有問題的查詢,並將EXPLAIN {query}
鍵入mysql提示符(您可以使用rails dbconsole
或Oracle提供的獨立mysql客戶端訪問該提示符)。查看瓶頸查詢中使用的索引,並詢問更具體的問題。
我猜你的很多查詢是通過他們的類別ID來查詢產品的。將索引category_id列添加到Products中可能會加速避免加入,儘管如此還是有責任讓該列保持最新狀態。
相關問題
- 1. 爲我的Rails應用程序添加數據庫索引
- 2. 搜索索引與數據庫索引
- 3. Rails應用程序中的數據庫
- 4. Rails應用程序Google索引
- 5. 啓用搜索引擎從Web應用程序索引數據
- 6. 如何爲我的應用程序創建索引數據庫
- 7. 數據庫索引應用程序 - 最佳實踐
- 8. Android應用程序數據庫與遠程數據庫同步
- 9. Rails應用程序 - 與pg數據庫 - 設置錯誤
- 10. Rails應用程序連接與優勢數據庫
- 11. 水豚與MongoDB/Mongoid Rails應用程序(無SQL數據庫)
- 12. Ruby on Rails應用程序與MySQL數據庫
- 13. Rails引擎與機架應用程序
- 14. 鏈接應用程序與數據庫
- 15. Android應用程序與數據庫?
- 16. 容器與應用程序+數據庫
- 17. java應用程序與mysql數據庫
- 18. 數據庫與應用程序
- 19. django谷歌應用程序引擎與關係數據庫
- 20. Emberjs索引與應用程序
- 21. 查詢索引與asp.net應用程序
- 22. 欄上的數據庫索引順序使用Rails遷移
- 23. Rails 4併發數據庫索引
- 24. Rails應用程序與遠程數據庫 - 應該複製到我的應用程序或遠程連接
- 25. Rails應用程序引擎
- 26. Rails應用程序:將數據sqlite3數據庫導入到sqlite3
- 27. Stateful Rails應用程序。不在數據庫中存儲數據
- 28. 我可以導入JSON數據到數據庫,與我的Rails應用程序?
- 29. 涵蓋索引與集羣索引(數據庫索引)
- 30. 如何添加搜索索引到iPhone應用程序中的sqlite數據庫
「爲索引這些表以增加應用加載時間,最有效的方法是什麼?」我認爲你的意思是「減少」。 – RecursivelyIronic
你知道什麼主要的問題被解僱嗎?更好地檢查應用索引w.r.t之前和之後的查詢響應時間。主要查詢,確保您應用的索引值得。否則,沒有一點只是盲目維護索引,看到這一個 - http://stackoverflow.com/questions/3243475/how-do-you-identify-unused-indexes-in-a-mysql-database –