0

私はこのクエリを持っています、

User.where('name LIKE ?', "%#{term}%").where(group: "student").limit(10)

主に 2 つではなく 1 つの where メソッドを許可しますが、SQL クエリがグループ フィールドを認識しないという結果になります。これまでのところ、上記は機能していますが、これを改善できるかどうか、およびその方法を知りたいです。

また、審美的な外観以外に、クエリに複数の where メソッドを使用することについて心配する必要がありますか?

4

2 に答える 2

1

あなたが持っている現在のコードは問題なく、への呼び出しを組み合わせるよりも読みやすいですwhere。他のコメンター/回答で指摘されているように、複数の呼び出しを行ってwhereも、db クエリの合計速度には影響しません。

クエリを単一のwhere呼び出しに変更する方法を知りたい場合は、次のことを試してください。

User.where('name LIKE ? AND group = ?', "%#{term}%", 'student').limit(10)
于 2013-04-17T07:58:14.023 に答える
1

複数の場所がパフォーマンスに顕著な影響を与えることはありません。DB がヒットされるのは 1 回だけです。

「LIKE」を含むクエリは本質的に低速です。

于 2013-04-17T00:51:26.123 に答える