gpt4 book ai didi

ruby-on-rails - Rails where 或 select 用于查询链接

转载 作者:行者123 更新时间:2023-12-04 05:36:55 28 4
gpt4 key购买 nike

所以在查询数据库时,我知道最好使用 where在像这样的初始查询上:

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

但是,如果我需要进一步过滤这些信息,我可以使用 where 来完成。或 select :
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从性能的角度来看要好得多。 where修改 SQL,以便数据库执行识别要检索的记录的“繁重工作”。
select检索满足初始 where 的所有记录条件,将它们转换为数组,并使用“Array#select”,因此选择发生在 rails 端,并且您从数据库中检索到的记录比您需要的多,并完成了比必要的更多的处理。

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

关于ruby-on-rails - Rails where 或 select 用于查询链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42448821/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com