【问题标题】:Most efficient Rails query method [closed]最有效的 Rails 查询方法 [关闭]
【发布时间】:2019-02-19 16:35:59
【问题描述】:

我一直在研究几种编写高效 ActiveRecord 查询的方法,我想我可能会提出来就谁认为什么是最好的达成共识。

@page = @current_shop.pages.where(state: "home").first

目前,我推测 find_by_sql 可能是最好的路线?

【问题讨论】:

  • 最适合什么?此行是否生成次优 SQL?如果是这样,你为什么这么认为?
  • 如果您想要速度,只需测试两者并选择最适合您的。但是与使用字符串 sql 语句的缺点相比,速度上的好处将是微乎其微的,这就像使用 ActiveRecord 的全部意义。

标签: mysql ruby-on-rails activerecord


【解决方案1】:

Rails 有助于记录每个查询的执行时间,并且这种形式的查询通常非常简单。这是一个双重条件 SELECT 并应用了 LIMIT

find_by_sql 保留用于例外 情况,而不是常规情况。在这种情况下,如果您采用“原始查询”路线,您最多可以节省几分之一毫秒。您还将获得原始查询结果,而不是模型,然后您必须对其进行处理。

这是过早优化的经典案例。如果您有可测量的性能问题,而不是可疑的性能问题,那么您可能需要考虑缓存以完全避免数据库调用,而不是尝试稍微加快执行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2013-05-12
    • 2010-10-19
    相关资源
    最近更新 更多