コレクションを数えるとき。サイズまたはカウントでそれを行う方が良いですか?
サイズ=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、インスタンスをメモリにロードせず、レコードの数を返すだけなので、これを使用します。