1

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

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

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

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

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

4

2 回答 2

1

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

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

于 2012-05-29T15:20:41.840 回答
0

它会有点特定于 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

看看这个

于 2012-05-29T15:21:52.183 回答