1

AR を介して Rails で結果をフェッチできることを私が知っている方法は 2 つあります。ここでは、同じ結果を返すが異なる SQL クエリを作成する 2 つのクエリの例を示します。

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

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

2番目のもの(見栄えが良いことに加えて、IMHO)もBETWEENタイプSQLクエリを作成しますが、最初のものはほとんど自明です。

スタイル以外の理由で、どちらがパフォーマンスが優れているか、または他の理由で優れていますか?

4

2 に答える 2

1

ほとんどの人が B を選ぶと思います。なぜなら、書くコードが少なく、SQLクエリについてまったく考える必要がないからです。

パフォーマンスについては、同じであるべきだと思います。MySQL は、範囲値で where 句を実行するためのより優れた方法を提供するだけです。

于 2012-05-29T15:20:41.840 に答える
0

Railsがこれらのクエリを生成するため、少しdb固有になります

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 に答える