rubyのcountについてメモ
count
を使わなくて失敗したので戒めを含めメモ。
Active Recordのデータ(配列)に対して
sizeを使えば配列を全てオンメモリ
で扱って、結果を返す。
countはを使えばdbに投げて
結果を返してくれる。
↑のことはわかっていたけど、物理的な部分を理解しているつもりで終わっていた。
例えば、100件程度のデータならsizeの方が良いと思うが、数十万件となるとcountの方が良いと思う。
理由としては
数十万件のデータを全てメモリに載せようとするとおそらくメモリが足りずに落ちる
からである。
blank?とかpresent?
とかも同じことが言える。
配列を判定する時に値が存在する、存在しないという処理も配列のデータをオンメモリで扱おうとするので仮に数十万件データが入っていると落ちる可能性がある。
array.count > 0
という処理はpresent?
を使えば良いと思っていたけど、時には必要なんだなと思った。
countが使えない場合はfind_each
とかを使って頑張るしか無いかなと思う。
その辺をわかっているつもりでわかっていなかったから、不具合を産んでしまった。次は絶対に同じミスをしない。