【发布时间】:2012-07-14 01:53:03
【问题描述】:
我有一个非常大的数据库,我正在使用类似于此 railscast 的高级搜索表单:http://railscasts.com/episodes/111-advanced-search-form-revised
也许这是一个愚蠢的问题,但想象一下,您有 400,000 个(或更多)产品要使用 .where(和分页)链进行过滤。
products = Product.order(:name)
products = products.where("name like ?", "%#{keywords}%") if keywords.present?
products = products.where(category_id: category_id) if category_id.present?
products = products.where("price >= ?", min_price) if min_price.present?
products = products.where("price <= ?", max_price) if max_price.present?
products.page(params[:page])
在我看来,搜索会执行第一个条件,然后使用其他 where 条件进行过滤,这样您就可以搜索到 400,000 个产品。这不会影响性能,还是我完全(我希望)错了?
注意:我也在 railscast 上写过问过这个问题,但是,作为一个旧的 railscast,我不知道是否有人会在那里看到这个问题。为此,我也在这里写了。
【问题讨论】:
标签: ruby-on-rails-3 activerecord advanced-search