分块查询 缓解内存开销
来源:互联网 发布:js execcommand 编辑:程序博客网 时间:2024/05/20 02:30
分块查询是为查询大量数据的需要而设计的,假如think_data
表已经有超过1万条记录,但是一次性取那么大的数据会导致内存开销非常之大,但确实又有这个需要(例如查询所有的数据并导出到excel
),采用分块查询可以缓解这个问题。
使用分块查询,可以把1万条记录分成100
次处理,每次处理100
条记录,代码示例如下:
Db::name('data') ->where('status', '>', 0) ->chunk(100, function ($list) { // 处理100条记录 foreach($list as $data){ } });
第二个参数可以是有效的callback
类型,包括使用闭包函数。
系统会按照主键顺序查询,每次查询100
条,如果你不希望使用主键进行查询,或者没有主键的话,则需要指定查询的排序字段(但必须是唯一的),例如:
Db::name('user') ->where('status', '>', 0) ->chunk(100, function ($list) { // 处理100条记录 foreach($list as $data){ } }, 'uid');
然后交给callback
进行数据处理,处理完毕后继续查询下一个100
条记录,如果你需要在中途中断后续的查询,只需要在callback
方法调用中返回false
即可,例如:
Db::name('data') ->where('status','>',0) ->chunk(100,function($list){ foreach($list as $data){ // 返回false则中断后续查询 return false; } });
阅读全文
0 0
- 分块查询 缓解内存开销
- 查询开销
- SqlSever查询开销
- 降低 Linux 内存开销
- 降低 Linux 内存开销
- 珍惜内存,远离开销
- 降低 Linux 内存开销
- ArrayList——内存开销,时间上的开销
- K小数查询:分块
- 读内存/写内存时间开销
- JVM内存分块
- JVM内存分块详解
- JVM堆内存分块
- 降低 Linux 内存开销(转贴收藏)
- C#监控内存开销,调用外部命令
- 链表操作2 避免内存开销
- 谈OSSIM服务器内存开销问题
- 存储一个图的内存开销
- Android高德地图恢复正北方向
- Windows下配置Python2和Python3
- 每周荐书:高可用架构、解忧程序员、财富自由之路(评论送书)
- Android 设计模式之桥接模式
- Java互联网架构-企业级实战秒杀系统优化方案与应用思路
- 分块查询 缓解内存开销
- pytorch安装
- JavaScript实现页面加载成功后刷新一遍当前页面(二)
- Unity 轮播功能
- KafkaOffsetMonitor安装
- 在ACE中使用KindeditorHTML可视化编辑器
- java中在类的内部定义接口有什么好处?这和在外部直接定义有什么区别?越详细越好?
- Android Studio升级3.0之后趟的坑
- 解决华为手机InputMethodManager和GestureBoostManager的内存泄露的问题