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