2015-02-08 13 views
4

如何我有一個巨大的表foo從中我需要摘下在某一個領域,Foo.who所有值。在Rails 3.2,爲「pluck_in_batches」一個非常大的表

陣列具有數百萬行的,但在who列只有幾千不同的值。

如果表當然是小我會簡單地使用Foo.pluck(:who)

如果我使用Foo.find_in_batches do |a_batch|每一組是富記錄的數組,而不是富記錄的ActiveRecord的集合,所以我不能使用.pluck()和AFAIK提取who列的唯一方法是通過像.map(&:who)這樣的迭代遍歷數組。

有沒有辦法從批處理中抽取who列,然後不需要迭代每批的每個元素來提取who列?

+2

鋼軌4+,檢查[本要旨](https://gist.github.com/siannopollo/03d646eb7525f7fce678#file-pluck_in_batches-rb)用於'pluck_in_batches'方法 – allenwlee 2015-03-13 21:07:39

回答

2

嘗試這種情況:

Foo.select(:id, :who).find_in_batches do |a_batch| 
    ... 
end 
+0

這仍然會創建ActiveRecord對象,我認爲OP正在嘗試避免出於內存和速度的原因。 – mpoisot 2018-02-21 21:57:44