gpt4 book ai didi

sql - 哪个 ActiveRecord 查询更快?

转载 作者:数据小太阳 更新时间:2023-10-29 08:46:00 25 4
gpt4 key购买 nike

这三个查询返回相同的结果。我怎样才能找出哪个更快?

IssueStatus.where 'issue_statuses.name != ?', IssueStatus::CLOSED

IssueStatus.where({name: ["Open", "Ice Box", "Submitted for merge", "In Progress"]})

IssueStatus.where.not(name: "Closed")

最佳答案

没有单一的答案:这取决于你是否对该字段有索引,以及记录的数量。您可以在查询末尾附加 .explain 以获得 Query Plan for the query 的结果.

puts IssueStatus.where.not(name: "Closed").explain

这将帮助您在数据库级别了解哪个更快。从数据库 POV 来看,第一个和第三个查询实际上是相同的。

第三个链接了一个更多的方法调用,因此它在 Ruby 级别涉及一些额外的对象分配(没有提到 "Closed" 导致创建一个新字符串,而使用 IssueStatus: :CLOSED 没有)。

乍一看,我可能会建议使用第一个版本。但正如我所说,查询计划将为您提供有关查询执行的更多详细信息。

关于sql - 哪个 ActiveRecord 查询更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331112/

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