我想在 rake 任务中将我的销售数据导出到 CSV 文件。销售表大约有 1 亿个条目。我该如何优化此代码?它运行的时间越长,速度似乎就越慢。
sales = Sales.where(year: 2024)
BATCH_SIZE = 10_000
header_names = %w[user_id article_id amount currency date]
batch = []
File.open(filepath, 'w') do |file|
sales.find_each(batch_size: BATCH_SIZE)do |sale|
batch << sale.slice(*header_names).values.join(';')
if batch.size >= BATCH_SIZE
file.puts batch.join("\n")
batch.clear
end
end
file.puts batch.join("\n") unless batch.empty?
end
这花了我大约 23 分钟来导出 1700 万个条目。