最近用到批量生成大量数据,为避免客户端产生假死的状态,因此测试了以下几种方式的效率
def test1
params=[]
puts Time.now
10000.times do |i|
e_quiz = ExaminationQuiz.new
e_quiz.examination_id = 1
e_quiz.quiz_id = i
params.push(e_quiz)
end
puts Time.now
ExaminationQuiz.create(params)
puts Time.now
end
def test2
params=[]
s = Examination.first
puts Time.now
10000.times do |i|
s.examination_quizzes.create(:quiz_id=>i)
end
puts Time.now
end
def test3
params=[]
con = ActiveRecord::Base.connection()
puts Time.now
10000.times do |i|
params.push("('title',6,1,1,'',1,'','true',1,1,'#{Time.now.to_s(:db)}','#{Time.now.to_s(:db)}')")
end
sql = "INSERT INTO examination_quizzes (title,user_id,examination_id,quiz_id,quiz_type,submit_answer_id,submit_answer_name,is_correct,level_id,position,created_at,updated_at)VALUES #{params.join(", ")}"
puts Time.now
con.insert sql
puts Time.now
end