我有一个模型,我们称之为本例的Product
模型。我在这个数据库中有大约200k条记录,其中一半是active
(active: true
),一半不是。当用户搜索产品时,我只希望显示活动产品。我的代码看起来像这样:
def self.search
products = Products.where(active: true).order("`foo` = 'BAR'")
products = products.where(other_filters)
products = products.where(more_filters)
..
end
这样做会将前100k个活动的内容加载到内存中(在第一个puts products.size
返回where
后执行100000
),然后使用链接{{{{{{{{{ 1}}子句并在末尾分页,以便只显示25个。有没有更有效的方法来过滤这些结果?