介绍
这篇文章给大家分享的是有关yii2中批处理和每个有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
我们的数据库常常都是很庞大的,一次查询的结果集也很大,这样很浪费内存,为了降低内存的使用率,我们可以使用yii2的批次和每一方法。
为了让大家看的更明白,我们模拟一个场景,然后通过yii2的调试来查看所有与批/每方法下的内存使用情况。
<强>开始准备强>
我们先建立一张表,它很简单。
你看到了,它有主键id,会员名用户名,所在省省,现在它是空的。
然后,我们执行了一个循环
set_time_limit (0); (i=1; i<美元=10000;美元我+ +){ ,,,Yii:应用程序→美元db→createCommand()→插入(“user", [ ,,,,,,,& # 39;用户名# 39;=祝辞& # 39;高高# 39;。我美元, ,,,,,,,& # 39;省# 39;=祝辞& # 39;北京市& # 39; ,,,)→执行(); }
执行后,你知道我们的数据库里有10000条记录了,现在我们开始对比。
<强>对比强>
为了方便,我们在视图里直接写循环体,如下面代码,你一定可以看懂。
query 美元;=,new \ yii \ db \查询(); 从查询→美元(& # 39;用户# 39;); foreach(美元查询→所有(),as $ user) { ,,,echo $ user(& # 39;用户名# 39;); ,,,echo “& lt; br/在“; }
结果那?
<强>占有内存15.306 mb 强>
好的,现在开始看看批和每个的戏法,到底有没有节省内存。
query 美元;=,new \ yii \ db \查询(); 从查询→美元(& # 39;用户# 39;); foreach(查询→美元批(),as 美元用户){ ,,,,,,,foreach (users 美元;as $ user) { ,,,,,,,echo $ user(& # 39;用户名# 39;); ,,,,,,,echo “& lt; br/在“; ,,,} }
结果那?
<强>果然,节省了一半的内存。现在仅仅占用了8.077 mb 强>
同样的
query 美元;=,new \ yii \ db \查询(); 从查询→美元(& # 39;用户# 39;); foreach(查询→美元(),as $ user) { ,,,echo $ user(& # 39;用户名# 39;); ,,,echo “& lt; br/在“; }
每个的表现也相当不错
<强>结果强>
当我们遇到需要一次读取出所有的或是大批量数据的时候,可以考虑使用批处理和每一个,这一点点代码的优化帮你省掉了一半的内存。
感谢各位的阅读!关于“yii2中批处理和每个有哪些区别”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!