【发布时间】:2021-09-05 16:09:13
【问题描述】:
我正在使用 Active Record 向 postgres 数据库发送一些查询。
我有一个用户模型、一个业务模型和一个名为 UserBiz 的加入者。
我提到的查询会遍历整个 UserBiz 集合,然后过滤掉与用户提供的类别和搜索匹配的企业。
if !params[:category].blank?
dataset = UserBiz.all.includes(:business, :user).select{|ub| (ub.business.category.downcase == params[:category].downcase) }
else
dataset = UserBiz.all.includes(:business, :user)
end
if !params[:search].blank?
dataset = dataset.select{|ub| (ub.business.summary.downcase.include? params[:search].downcase) || (ub.business.name.downcase.include? params[:search].downcase) }
end
这些“工作”,但问题是当我将 25 万个 UserBiz 放入我的数据库以查看发生了什么时,一次搜索或类别更改需要 15 秒。如何使这些查询更快?
【问题讨论】:
标签: sql ruby-on-rails postgresql rails-activerecord eager-loading