私は、メモの数を追加するより効率的な方法を試しています。単純なwhere条件をクエリに適用しました。しかし、これには、繰り返し実行する20Kレコードがあるので、永遠にかかることがあります。これについて何か考えてもらえますか?多数の列に対するより効率的なアクティブレコードクエリ
def reblog_array(notes)
data = []
notes.select('note_type, count(*) as count').where(:note_type => 'reblog', :created_at => Date.today.years_ago(1)..Date.today).group('DATE(created_at)').each do |n|
data << n.count
end
return data
end
これは私のコントローラからreblog_array(ノート)に渡されたものです。
@tumblr = Tumblr.find(params[:id])
@notes = Note.where("tumblr_id = '#{@tumblr.id}'")
私はすでに正しい方法で行っていると思います。あなたは1つのクエリを作成し、それは良いです!おそらく、created_atまたはnote_typeカラムにインデックスを追加することで速度を上げることができます。このジョブを何度も実行する必要がある場合は、カウントキャッシングをチェックする必要があります。 –