好的,所以我有一个名为HashtagMapper.com的Rails应用程序,该应用程序可以按成千上万条找到推文并进行映射。我遇到的问题是,对1000多个查询进行地理编码之间可能需要10秒钟,然后.create()调用大约需要10毫秒,而对于1000个查询则需要10秒钟。

如何一次在Rails中全部创建1000个以上的DB对象?现在我正在打电话

SearchResult.create([ { :2D => array }, { :of => SearchResults } ])


对于1000多个对象。普通的SQL会更快吗?怎么样?

最佳答案

使用BulkInsert gem

从数组或哈希中:

Book.bulk_insert(:title, :author) do |worker|
  # specify a row as an array of values...
  worker.add ["Eye of the World", "Robert Jordan"]

  # or as a hash
  worker.add title: "Lord of Light", author: "Roger Zelazny"
end


默认为数据库列

class Book < ActiveRecord::Base
end

book_attrs = ... # some array of hashes, for instance
Book.bulk_insert do |worker|
  book_attrs.each do |attrs|
    worker.add(attrs)
  end
end

关于sql - 在rails中批量创建记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20303952/

10-16 03:52