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