Какой запрос быстрее? В первом примере я делаю 2 вызова в БД.
Во втором примере я делаю 1 вызов в БД, но затем мне нужно дополнительно уточнить эти данные, чтобы получить мой итог.
made = SingleBet.where(maker_id: @current_user.id, taker_id: user.id, status: 'accepted')
taken = SingleBet.where(taker_id: @current_user.id, maker_id: user.id, status: 'accepted')
@total = made.pluck(:amount).sum + taken.pluck(:taker_amount).sum
против
made_and_taken = SingleBet.where(maker_id: @current_user.id, taker_id: user.id, status: 'accepted').or(SingleBet.where(taker_id: @current_user.id, maker_id: user.id, status: 'accepted'))
@total = made_and_taken.where(maker_id: @current_user.id).pluck(:amount).sum + made_and_taken.where(taker_id: @current_user.id).pluck(:taker_amount).sum
Выобратите внимание, что во втором примере мне нужно использовать предложение where
при расчете @total. Я думаю, что этот второй пример быстрее, потому что предложение 'where' не собирается в БД?
Спасибо!