繁体   English   中英

Rails 活动记录,链接 where 子句时的性能

[英]Rails active record, performance when chaining where clauses

我只是希望得到一些反馈,以确保我理解正确。 根据我的阅读,我的理解是,拥有多个where实例不应损害应用程序的性能,因为ActiveRecord relation对象本身在链接完成之前不会执行 SQL 查询

就我而言,假设我有一张名为Game的桌子和一张名为Players的桌子。 游戏有很多玩家,玩家参与了很多游戏。 我想允许用户在搜索框中输入名称并搜索所有游戏并按玩家名称过滤它们。 如果用户没有输入任何内容,它应该返回属性prospective == false的所有游戏的列表

这段代码在功能上对我来说很好。 我只是想确保从性能的角度来看,我没有做任何次优的事情。

def controller_name
  games = Game.where.not(game: :prospective).order('score DESC')

  if search_text.present?
    games = games.joins(:players).where("lower(players.name) LIKE ?", "%#{search_text.downcase}%")
  end

  return games
end

就我而言,我实际上使用的是 GraphQL,但我认为这不会有什么不同。 我只是想确认在那种情况下不会执行 2 个单独的查询search_text.present? == true search_text.present? == true

我也欢迎任何其他关于优化或更简洁地编写它的建议。 我对rails相当陌生

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM