コレクションを数えるとき。サイズまたはカウントでそれを行う方が良いですか?
サイズ=Ruby(@foobars.size
)
カウント=SQL(@foobars.count
)
私も気づきcount
ました、dbへの別の旅行をします。
コレクションを数えるとき。サイズまたはカウントでそれを行う方が良いですか?
サイズ=Ruby(@foobars.size
)
カウント=SQL(@foobars.count
)
私も気づきcount
ました、dbへの別の旅行をします。
size
安全だからといって、すべてに使うことを提案する傾向があります。を使用すると、愚かな間違いを減らすことができsize
ます。
仕組みは次のとおりです。
length
:lengthは、配列またはロードされたコレクションからの要素の数を返します。重要な点は、コレクションがここにロードされることです。したがって、activerecordアソシエーションを使用している場合は、要素をDBからメモリにプルしてから、番号を返します。
count
:countはデータベースクエリを発行するため、すでに配列がある場合は、データベースへの無意味な呼び出しです。
size
:両方の長所-サイズは、使用しているタイプをチェックしてから、より適切と思われるタイプを使用します(したがって、配列がある場合は長さを使用し、取得されていない場合ActiveRecord::Association
はカウントなどを使用します)。
出典: http: //blog.hasmanythrough.com/2008/2/27/count-length-size/
状況によります。この例でsize
は、コレクションが既にロードされており、を呼び出すとsize
配列の長さがチェックされるため、これを使用します。お気づきのcount
ように、追加のデータベースクエリを実行しますが、これは避けたいと考えています。
ただし、Foobarの数のみを表示し、それらのオブジェクトを表示したくないシナリオではcount
、インスタンスをメモリにロードせず、レコードの数を返すだけなので、これを使用します。