2016-10-28 3 views
0

あなたのユーザーアカウントのコメントのCSVレポートをダウンロードできるページがあるとします。これは何千ものレコードを持つことができます。各ユーザーのコメントをより速く読む方法はありますか?今は単純なループをしています。ダウンロードされたCSVレポートサーバーが過負荷になっていると、何千ものレコードを効率的に取得できますか?

+0

csvファイルではなくデータベースにデータを格納するのがよいでしょう。 –

+0

@DanBracukデータベースにあります。そのデータをCSVファイルにダウンロードできるページがあります。 – cvDv

+0

あなたはどのDBMSを使用していますか? 'SQL SERVER'では、' BCP'ユーティリティを使ってCSVを生成することができます。それは非常に効率的ですあなたは各レコードをループする必要はありません –

答えて

0

ストレートCSVにダンプするDBの特定のクエリの外では、あなたが本当に唯一、私はこれらすべてのARオブジェクトをインスタンス化のオーバーヘッドを回避するためにpluckを使用することになり、一度に単一のユーザーのコメントをダンプしていると仮定。また、返される列を本当にエクスポートする必要がある列に限定することもできます。

@user.comments.pluck(:id, :body).each do |comment| 
    # add to csv here 
end 
0

ような何か:

require 'csv' 
sql = "Select * from comments" 
records = ActiveRecord::Base.connection.execute(sql) 
CSV.open("path/to/file.csv", "wb") do |csv| 
    records.each do |rec| 
    csv << rec 
    end 
end 

は速く、各行のためのARオブジェクトを作成するよりも桁違いのカップルであるべき。このコードはテストしていませんが、あなたはそのアイディアを得ています。

関連する問題