[英]Reducing sql queries generated - ruby on rails
我對Rails還是比較陌生的,我目前正在處理的主要任務之一是減少生成的查詢數量。 我已經知道要使用includes
實現的關聯的“渴望加載”。 但是,我不確定如何處理表未關聯的情況。
我的代碼流如下所示:
t1 = table1.where('id in (:id)', :id => id_list).all
t1.each do |x1|
t2 = table2.where(t2_id: x1[:t2_id]).all
t2.each do |x2|
t3 = table3.where('id1 = ? and id2 = ?',t2[:id],t1[:id]).all
t3.each do |x3|
.....
這是代碼的一般流程。 未引用表1,2和3。 有沒有一種方法可以減少此流程中的查詢數量?
如果Table1不屬於Table2,而Table3應該具有has_many Table1和Table2,我認為您應該添加它,看不到為什么不能
無論如何,您可以執行以下操作:
Table1.eager_load(:table2, :table3).where('table1.id in (:id) AND table2.id = table1.t2_id AND table3.id1 = table1.id AND table3.id2 = table2.id', id: id_list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.