在处理大量数据时,使用批量操作可大幅减少数据库实际读写次数,从而提升性能。例如,可以使用 ActiveRecord::Base.transaction
方法对多个模型实例进行保存:
ActiveRecord::Base.transaction do
1000.times do |i|
User.create!(name: "user #{i}")
end
end
避免 N+1 查询可以大幅提升性能。在使用 ActiveRecord 查询关联表数据时,可以使用 includes 方法来预加载关联表数据。例如:
# 查询所有文章及其作者的用户名
articles = Article.includes(:user)
articles.each do |article|
puts "#{article.title} by #{article.user.name}"
end
使用 limit、offset 方法限制查询结果数量可以提升查询性能。例如:
# 查询前 10 条数据
User.limit(10).each do |user|
puts user.name
end
# 查询第 11 条至第 20 条数据
User.limit(10).offset(10).each do |user|
puts user.name
end