内容简介:使用 Laravel 的 chunk 可以用来优化大结果集的查询,提供分块处理数据的方法,但是如下的例子就会有问题:原因在于第一次查询:select * from users where approved = 0 limit 100 offset 0;
使用 Laravel 的 chunk 可以用来优化大结果集的查询,提供分块处理数据的方法,但是如下的例子就会有问题:
User::where('approved', 0)->chunk(100, function ($users) { foreach ($users as $user) { $user->update(['approved' => 1]); } });
原因在于第一次查询:
select * from users where approved = 0 limit 100 offset 0;
update 这一批数据的 approved 为 1 之后,
再看第二次查询:
select * from users where approved = 0 limit 100 offset 100;
这个时候因为有 where approved = 0 条件并且偏移量从 100 开始,这样其实就漏掉了 100 条 approved 为 0 的数据。
所以,我们要避免使用 chunk 的时候,更改和过滤条件的字段的值。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- JWT使用一些注意事项
- 使用 Spring AOP 注意事项
- [译] MySQL UTF-8 使用请注意
- epoll事件驱动框架使用注意事项
- Java中Optional使用注意事项
- 如何使用注意力模型生成图像描述?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。