1

コレクションを数えるとき。サイズまたはカウントでそれを行う方が良いですか?

サイズ=Ruby(@foobars.size

カウント=SQL(@foobars.count

私も気づきcountました、dbへの別の旅行をします。

4

2 に答える 2

5

size安全だからといって、すべてに使うことを提案する傾向があります。を使用すると、愚かな間違いを減らすことができsizeます。

仕組みは次のとおりです。

length:lengthは、配列またはロードされたコレクションからの要素の数を返します。重要な点は、コレクションがここにロードされることです。したがって、activerecordアソシエーションを使用している場合は、要素をDBからメモリにプルしてから、番号を返します。

count:countはデータベースクエリを発行するため、すでに配列がある場合は、データベースへの無意味な呼び出しです。

size:両方の長所-サイズは、使用しているタイプをチェックしてから、より適切と思われるタイプを使用します(したがって、配列がある場合は長さを使用し、取得されていない場合ActiveRecord::Associationはカウントなどを使用します)。

出典: http: //blog.hasmanythrough.com/2008/2/27/count-length-size/

于 2012-08-10T03:35:12.530 に答える
0

状況によります。この例でsizeは、コレクションが既にロードされており、を呼び出すとsize配列の長さがチェックされるため、これを使用します。お気づきのcountように、追加のデータベースクエリを実行しますが、これは避けたいと考えています。

ただし、Foobarの数のみを表示し、それらのオブジェクトを表示したくないシナリオではcount、インスタンスをメモリにロードせず、レコードの数を返すだけなので、これを使用します。

于 2012-08-10T01:57:58.823 に答える