我有非常大的数据库,我正在使用类似于此 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,我不知道是否有人会在那里看到这个问题。出于这个原因,我也在这里写了。