find_in_batches
不允許純SQL(據我所見)。
find_by_sql
沒有批處理支持(據我所知)。如何在Rails中執行類似find_in_batches_by_sql的操作
那麼我該如何做點像find_in_batches_by_sql
?
SQL是討厭的編程式生成的東西,它指向第三方數據庫,結果集可能有成千上萬到數百萬記錄返回。
是否有其他光標技巧與ActiveRecord我應該看看?
謝謝。
find_in_batches
不允許純SQL(據我所見)。
find_by_sql
沒有批處理支持(據我所知)。如何在Rails中執行類似find_in_batches_by_sql的操作
那麼我該如何做點像find_in_batches_by_sql
?
SQL是討厭的編程式生成的東西,它指向第三方數據庫,結果集可能有成千上萬到數百萬記錄返回。
是否有其他光標技巧與ActiveRecord我應該看看?
謝謝。
你總是可以打破SQL分成幾部分,並完成類似
Model.select("*").where("WHERE CLAUSE HERE").joins("JOIN CLAUSES HERE").find_in_batches {...}
或者,如果你需要非常有趣的東西,SQL你可以只使用一個偏移量,並限制和循環,直到你筋疲力盡的結果。這裏的基本思想是:
offset = 0
limit = 1000
while(results)
results = Model.find_by_sql("<your SQL here> OFFSET #{offset} LIMIT #{limit}")
offset += limit
# Do stuff here
end
注抵消後應限制
offset = 0
limit = 1000
while(results)
results = Model.find_by_sql("<your SQL here> LIMIT #{limit} OFFSET #{offset}")
offset += limit
# Do stuff here
end