Rails在哪里或选择查询链接

所以在查询数据库时,我知道在初始查询中使用的where要好得多,如下所示:

 pending = Request.where("status = ?", "Pending").order! 'created_at DESC' 

但是,如果我需要进一步过滤此信息,我可以使用whereselect

 high_p = pending.where("priority = ?", "High Priority") normal_p = pending.where("priority = ?", "Priority") 

要么

 high_p = pending.select{|x| x.priority == "High Priority"} normal_p = pending.select{|x| x.priority == "Priority"} 

我的问题是,从绩效的角度来看,哪一项更好? 我们应该总是where使用? 或者,当没有搜索整个数据库时, select是否有用例?

从绩效的角度来看where好多了。 修改SQL的位置,以便DB执行识别要检索的记录的“繁重工作”。

select检索满足初始where条件的所有记录,将它们转换为数组,并使用`Array#select’,因此选择发生在rails端,你从db中检索的记录多于你需要的记录并完成了更多的处理比必要的。

Select确实有一个优点,你可以根据可能不是简单地从表列中提取的模型方法进行选择。 例如,你可能有一个模型方法#bad_credit? 这取决于信用额度,未付发票的年龄和帐户类型。