首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails where或select for query chaining

Rails where或select for query chaining
EN

Stack Overflow用户
提问于 2017-02-25 05:44:29
回答 1查看 1.9K关注 0票数 3

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

代码语言:javascript
复制
pending = Request.where("status = ?", "Pending").order! 'created_at DESC'

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

代码语言:javascript
复制
high_p = pending.where("priority = ?", "High Priority")
normal_p = pending.where("priority = ?", "Priority")

代码语言:javascript
复制
high_p = pending.select{|x| x.priority == "High Priority"}
normal_p = pending.select{|x| x.priority == "Priority"}

我的问题是,从性能的角度来看,哪一个更好?我们应该一直使用where吗?或者,当整个数据库都没有被搜索时,select有没有用例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-25 06:43:05

从性能的角度来看,where要好得多。where修改了SQL,以便DB执行标识要检索的记录的“繁重任务”。

select检索满足初始where条件的所有记录,将它们转换为数组,并使用`Array#select‘,因此选择发生在rails端,您从数据库中检索到的记录比所需的多,并且做了比所需的更多的处理。

Select确实有一个优势,那就是您可以基于可能不是简单地从表列中提取的模型方法进行选择。例如,您可能有一个模型方法#bad_credit?,它由信用额度、未付发票的年龄和帐户类型确定。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42448821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档