• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php优化查询foreach代码实例讲解

    php代码优化

    应避免在php foreach里面进行sql查询
    以下代码示例使用了laravel的操作数据库api,eloquent orm

    foreach里面执行两次sql查询

    // $datas 要返回的数据
    foreach ($datas as $_v) {
      // todo 在foreach中查询了两次 **time**: 290 ms(postman)
      $uid = $_v->uid;
      $_v->user_name  = User::find($uid)->username; // 1
      $_v->user_avatar = User::find($uid)->avatar;  // 2
    }

    foreach里面执行一次sql查询

    foreach ($datas as $_v) {
      // todo
      // 简单的优化使得两次sql查询变成一次
      // 在foreach中查询了一次 **time**: 230 ms(postman)
      $user = User::find($_v->uid));   // 1
      $_v->user_name  = $user->username;
      $_v->user_avatar = $user->avatar;
    }

    将sql查询移到foreach外面

    上面两个方法都不可避免的在foreach里面执行了数据库查询
    **应避免在foreach中执行sql查询**
    此处我的做法是再加一层foreach+if来代替sql查询
    // 本质上是将foreach中的查询移到外面
    // $tmp_data_arr 是存储在foreach外面执行的数据库查询结果
    foreach ($tmp_data_arr as $value) {
      foreach ($datas as $_v) {
        if ($_v->uid === $value['id']) { // **time**: 180 ms(postman)
          $_v->user_name  = $value['username'];
          $_v->user_avatar = $value['avatar'];
        }
      }
    }

    小结

    // 返回数据
    return $datas;

    经过简单的优化:时间(ms):290 -> 230 -> 180

    到此这篇关于php优化查询foreach代码实例讲解的文章就介绍到这了,更多相关php优化查询foreach内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 浅谈PHP性能优化之php.ini配置
    • 详解PHP优化巨量关键词的匹配
    • PHP引擎php.ini参数优化深入讲解
    • PHP安全配置优化详解
    • PHP内存溢出优化代码详解
    • PHP优化教程之解决嵌套问题
    • PHP解决高并发的优化方案实例
    • PHP优化之批量操作MySQL实例分析
    • 如何使用PHP对象POPO来优化你的代码
    上一篇:YII2 全局异常处理深入讲解
    下一篇:PHP引擎php.ini参数优化深入讲解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php优化查询foreach代码实例讲解 php,优化,查询,foreach,代码,