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

admin3年前PHP教程58


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 修改SESSION的生存时间案例详解

需求背景:用户希望他登录之后,浏览器就帮他记住登录状态,这样他就不用每次进入的时候,都需要登录一次。session过期时间:如果我们没有设置session的生成时间,在配置文件中默认的生存时间是144...

江苏高防服务器有哪些优势

江苏高防服务器有哪些优势?江苏高防服务器相比传统服务器具有以下优势:1.高防抗D攻击:江苏高防服务器采用了高防抗D攻击的技术,能够有效抵御各种DDoS和CC攻击,保障网络的安全稳定性。2.高性能:江苏...

PHP操作MySQL的常用代码段梳理与总结

这篇文章为大家介绍,实用的PHP网站实际开发中常用到的操作mysql数据库的代码段,所有代码均可靠执行,此文将持续更新!!!1、向数据库插入数据表?12345678910111213141516171...

海外跨境网络服务,跨境直播电商的首选!

我们提供合法合规稳定的海外跨境网络服务,为用户提供高效、可靠、安全的网络加速方案。在该方案中,我们采用的专线加速SDWAN技术是一种基于专用物理线路的网络加速技术,与VPN翻墙技术不同。专线加速SDW...

php中yum命令用法详解

在php中关于yum命令还是比较多的,主要是因为在配置linux环境,linux中安装、卸载等各种操作中,因此,掌握命令还是相当重要的,在很多命令中,最常见使用的就是yum命令,总共有七个yum命令,...

租用高防服务器时重点看哪几个参数?国内100G高防服务器购买需要注意哪些事项?

高防服务器主要是针对公司客户的,高防服务器给客户提供了更加安全的网络执行环境,为客户提供安全的确保。在租赁高防服务器时,大家应该关注哪些参数呢?一起来了解一下。就服务器配置而言,通常会关注4点:cpu...