2012-04-21 3 views
39

データベースから特定の列のみを選択するようにSQLクエリを構造化する方法は何ですか、私は連続した定期的なajax呼び出し。不必要な読み込みは、リソースを消費し、遅いです。Rubyのレール - データベースからほんのわずかの列を選択してください

@itemlist = Item.find(:all, :conditions => { .... }) #this select all columns 

私はこのお試しくださいSELECT name, address FROM users;代わりのSELECT * FROM users;

+2

あなたが他の列を使用する/必要としない場合は通常、あなたはデータの正規化を考える必要があります。 –

答えて

93

Rails 3:

01のスコープをタックします。

Item.select("name, address").where(....)

+0

うん、すばらしい!これは、Rails 3が2番目のものよりもはるかに普及しているからです。 –

+2

また、SELECTステートメントに複数のテーブルがあり、1つ以上のテーブルに存在する可能性のあるカラムを参照している場合'select(" items.name、users.address ")'のように、selectにテーブルを含めます。 –

+0

私がテーブルに参加している間は動作しません – Chinmay235

2

を探しています::selectコンストラクトの使用を確認します

@itemlist = Item.find(:all, :select => "name, address", :conditions => { .... }) 
21

を。

Item.where(...).select("name, address") 

また、あれば.selectは無視されますようだ:(別名レールで3)、使用ARELを使用して

@itemlist = Item.find(:all,:select => 'name, address', :conditions => { .... }) 
+4

これは正しくなくなり、Rails 4ではサポートされていません。 – superluminary

+1

新しい.select構文を反映するためにsuperluminaryのコメントの後に答えが更新されました。 –

8

:Railsの以前のバージョンについては

@itemlist = Item.select('name, address', conditions: { .... }) 

:これを試してみてくださいinclude => ...

+0

助けてくれてありがとう! –

5
@itemlist = Item.select('name, address').where(...#some condition) 
関連する問題