簡體   English   中英

SQL相當於一條活動記錄查詢

[英]SQL equivalent to an active record query

我有一個很好用的查詢

Team.all.map do |team|
   message = CoachFee.find_one(team_id: team.id).team_price_explanation[:prices]
end

我的“團隊”class 很簡單

{
         :id => 1,
    :team_id => 6,
 :created_at => nil,
  :player_id => nil,
 :updated_at => nil,
    :user_id => 1417
}

team class 與CoachFee class 具有一對多關系。

唯一的問題是我的應用程序中有超過 300,000 個CoachFee數據庫值,因此運行它可能需要很長時間。 (超過 4 分鍾)。

有沒有sql專家知道如何快速將CoachFee.find_one(team_id: team.id)從 Active Record 替換為 SQL?

非常感謝任何人提前!

試試這個:

CoachFee
  .where(id: CoachFee.select(CoachFee.arel_table[:id].minimum).group(:team_id))
  .map {|cf| cf.team_price_explanation[:prices]} 

這將導致以下 SQL

SELECT 
  coach_fees.*
FROM 
  coach_fees 
WHERE 
  coach_fees.id IN ( 
    SELECT 
      MIN(coach_fees.id) 
    FROM 
      coach_fees
    GROUP BY 
      coach_fees.team_id
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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