优化建议:

1.不要foreach里边再查询表,因为循环多次查表会很占资源的

2.没有办法就关联表查询join

例子:

原写法:

$rsdo=Db::name('order')->field('id,number,pay_number,type')->where('user_id', $user_id)->where('state',0)->where('deleted',0)->select();

if(!empty($rsdo)){

foreach($rsdo as $rsdel){

//查询order_product中有没有相应number的商品,如果没有就删除订单记录

$prs=Db::name('order_product')->field('id')->where('user_id', $user_id)->where('number',$rsdel['number'])->find();

if(!$prs['id']){//不存在就删除

Db::name('order')->where('id',$rsdel['id'])->delete();

}

}

}

优化语句:(没有实测,大概意思)

$rsdo=Db::name('order')->field('id,number,pay_number,type')->where('user_id', $user_id)->where('state',0)->where('deleted',0)->select();

if(!empty($rsdo)){

$number_list = array_column($rsdo, 'number');

$prs = Db::name('order_product')->field('id')->where('user_id', $user_id)->where('number',['in', $number_list])->column('id','number');

$delete_order_ids = [];

foreach($rsdo as $rsdel){

//不存在就删除

if(empty($prs[$rsdel['number']])){

$delete_order_ids[] = $rsdel['id'];

}

}

$delete_order_ids = array_unique($delete_order_ids);

if(!empty($delete_order_ids)){

Db::name('order')->where('id',['in', $delete_order_ids])->delete();

}

}

tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表)相关推荐

  1. oracle 数据库循环查询语句怎么写,sql循环查询(sql语句循环查询详解)

    sql循环查询(sql语句循环查询详解) 2020-07-24 11:15:51 共10个回答 select*fromawheret_idin('3','4');select*fromawheret_ ...

  2. tp5循环查询语句_如何用Excel快速生成SQL语句,用过的人都说好

    Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能来快速生成SQL语句. 导入Excel数据 Excel的数据有多种方式,这 ...

  3. python中循环迭代语句_python条件与循环-循环

    1 while语句 while用于实现循环语句,通过判断条件是否为真,来决定是否继续执行. 1.1 一般语法 语法如下: while expression: suite_to_repeat 1.2 计 ...

  4. mysql怎么查看刷脏页慢_一条SQL查询语句极为缓慢,如何去优化呢

    一条 SQL 查询语句执行的很慢,那是每次查询都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?可以分以下两种情况来讨论. 大多数情况是正常的,只是偶尔会出现很慢的情况. 在数据量不变的情况下,这条 ...

  5. oracle for循环 查询语句,Oracle学习之:for循环中包涵select语句

    oracle中的for循环用法比较简单,但是在一次用到包涵select语句的for循环时,还是发现了一些自己以前没有注意的东西. Oracle中的for循环用法比较简单,,但是在一次用到包涵selec ...

  6. python无限循环条件循环_python 语句,条件,循环

    #coding:utf-8 __author__ = 'Administrator' #想要在同一行打印,print后面加',' print 12, print 34 '''从模块导入函数 impor ...

  7. java用for循环查询数据_使用for循环结果创建数据框

    我想创建一个数据框,其中df1值的平均值和df2值的平均值作为新数据框中的列 . 我可以得到要打印的值 for (i in samples) { print(c(with(df1, mean(d18_ ...

  8. 【C语言】循环语句(do while循环)

    简单不先于复杂,而是在复杂之后. 目录 do while循环 do 语句的用法 执行流程 do语句的特点 go to语句 do while循环 do 语句的用法 while循环和for循环都是入口条件 ...

  9. java循环嵌套语句示范_java的三种循环结构与循环嵌套

    循环结构: 语法,及执行顺序 语法: while(boolean类型){ //功能语句 } 执行顺序: 1断小括号中的值是否为true,如果为true,执行功能语句 2行完功能语句,继续判断小括号中的 ...

最新文章

  1. POJ 3278 Catch That Cow
  2. 深圳网络推广公司介绍几点新网站优化守则!
  3. 开发日记-20190527 关键词 ubuntu无线网卡驱动安装
  4. python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...
  5. 剑指Offer之栈的压入、弹出序列
  6. 把一个人的特点写具体作文_部编版五年级下册语文 第五单元:习作 | 把一个人的特点写具体 电子课本+教案课件...
  7. 计算机人力资源试题及答案,计算机二级word练习题一题目及答案.
  8. 安装及卸载CrossOver for Mac
  9. Office默认打开方式的改变方法以及安装程序莫名启动问题的权威汇总
  10. paip.slap工具与于64位win7与JDBC的性能对比
  11. a form 出口享惠情况_关于“出口享惠情况”如何填报?
  12. 数学基础知识总结 —— 6. 基本矩阵运算公式
  13. php迅雷地址解析,迅雷地址在线解密–PHP源码
  14. 一款红队大量资产指纹探测工具
  15. 显示文件内容时显示行号命令nl
  16. # D - Staircase Sequences
  17. 亚马逊将为语音助手研发AI芯片 欲追赶苹果
  18. 偏微分方程:计算基本理论
  19. 人工智能学习(八斗学院)
  20. 1407C. Chocolate Bunny(交互,推导)

热门文章

  1. python 统计组合用什么库_Python数据科学,用这些库就够了
  2. Codeforces Round #208 (Div. 2)D. Dima and Hares
  3. nginx+keepalived互为主主高可用配置
  4. 第一篇博客文章,hello world及编码
  5. Vulhub搭建小记
  6. Kinect实现简单的三维重建
  7. ubuntu  输入时弹出剪切板候选项
  8. 星晨急便凶多吉少:马云陈显宝无意援手或破产
  9. JavaScript学习笔记(七)——厚积薄发之小成果
  10. SQL Server 2005查询处理结构-用户模式计划(UMS)