Coc*_*oco 1 activerecord ruby-on-rails where-in rails-activerecord
假设我有一个id数组,可能大约有100000个id.在我无法创建临时表来进行JOIN的情况下.对我来说简单的解决方案是:
Product.where(id: ids)
Run Code Online (Sandbox Code Playgroud)
WHERE IN当数组很大时,这将生成似乎伤害Mysql 的子句.我想知道是否有更好的解决方案?
如果它是一个连续范围,你可以尝试使用BETWEEN- Product.where id: 1..100000将做的伎俩.
否则,whole_array_of_ids.each_slice(number_of_ids_mysql_can_handle){ |ids| Product.where(id: ids) }- 多个查询,但仍然可管理.在这里阅读every_slice和更多好东西.
此外,许多AR查找程序方法都有batch_sizeparam,但它似乎对你没有帮助,因为它将构造包含所有id的整个查询,然后LIMIT在最后拍a .
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |