1

Rails 3 アプリに SQL クエリがあります。

@followersに続くユーザーの ID の配列を返しますcurrent_user

@followers = current_user.following
@feed_items = Micropost.where("belongs_to_id IN (?)", @followers)

このクエリを実行するより効率的な方法はありますか?

4

2 に答える 2

3

あなたが持っているクエリは、これ以上最適化することはできません。インデックスを追加することで高速化できますがbelongs_to_id(外部キーに対してはほとんど常にそうする必要があります)、実際のクエリは変わりません。

INただし、クエリを作成するためのよりクリーンな方法があります。

Micropost.where(:belongs_to_id => @followers)

ここ@followersで、 は の値の配列ですbelongs_to_id

于 2012-04-16T22:46:20.217 に答える
1

私には良さそうです。

ただし、コード内の実際の最小文字数を探している場合は、次のように変更できます。

Micropost.where("belongs_to_id IN (?)", @followers)

Micropost.where("belongs_to_id = ?", @followers)

少し読みやすくなります。

Rails は配列を見て、IN.

いつものように、Ruby 言語の主な目標は読みやすさであるため、改善はほとんど役に立ちません。

クエリが非効率的であるため、そのフィールドのインデックスをチェックインする必要があります。
それらは各データベースに対してもう少し具体的である傾向があります-ジェネリックSQLのみを指定しました。あなたの質問で。

于 2012-04-16T22:49:42.050 に答える