z5h*_*z5h 8 sql activerecord ruby-on-rails
find_in_batches不允许纯SQL(据我所见).
find_by_sql没有批量支持(据我所知).
那我该怎么做find_in_batches_by_sql呢?
SQL是令人讨厌的编程生成的东西,它指向第三方数据库,结果集可以返回数十万到数百万条记录.
我应该研究一下ActiveRecord的其他光标技巧吗?
谢谢.
更新为使用LIMIT和OFFSET的正确顺序
您总是可以将SQL分解为多个部分并执行类似的操作
Model.select("*").where("WHERE CLAUSE HERE").joins("JOIN CLAUSES HERE").find_in_batches {...}
Run Code Online (Sandbox Code Playgroud)
或者,如果你需要非常有趣的SQL东西,你可以使用偏移量并限制和循环,直到你用完结果.这是基本的想法:
offset = 0
limit = 1000
while(results)
results = Model.find_by_sql("<your SQL here> LIMIT #{limit} OFFSET #{offset}")
offset += limit
# Do stuff here
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2921 次 |
| 最近记录: |