【问题标题】:What is ActiveRecord/SQL performance of queries between two dates什么是两个日期之间查询的 ActiveRecord/SQL 性能
【发布时间】:2012-05-29 14:59:06
【问题描述】:

我知道有两种方法可以通过 AR 在 Rails 中获取结果,这里有两个示例查询,它们返回相同的结果但执行不同的 SQL 查询。

一) where("created_at < ? and created_at > ?", week1, week2)

B) where(:created_at => week1..week2)

第二个(除了更好看,恕我直言)还创建了一个BETWEEN 类型的 SQL 查询,而第一个几乎是不言自明的。

哪个表现更好,或者除了风格之外的任何其他原因更好?

【问题讨论】:

  • 应该是 B) where(:created_at => week2..week1)
  • 你能给个理由吗?这就是我要找的,请说明原因

标签: sql ruby-on-rails-3 performance activerecord


【解决方案1】:

我认为 B 是大多数人会选择的,因为他们编写的代码更少,根本不需要考虑 SQL 查询。

对于性能,我认为应该是一样的。 MySQL 只是提供了一种更好的方法来在范围值中执行 where 子句。

【讨论】:

    【解决方案2】:

    它会有点特定于 db ..因为 rails 会为它们生成这些查询

    A) WHERE (created_at < '2012-05-29 13:14:50' and created_at > '2012-05-28 15:14:50')
    
    B) WHERE (`questions`.`created_at` BETWEEN '2012-05-28 15:14:39' AND '2012-05-29 13:14:39')
    

    :) 你不用太担心...只要你使用 ActiveRecord

    看看this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-25
      • 2010-12-14
      • 2015-04-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多