簡體   English   中英

減少生成的SQL查詢-ruby on rails

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM