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

admin3年前PHP教程87


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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

东莞高防服务器租用好不好主要看哪些

东莞高防服务器租用好不好主要看哪些?东莞高防服务器租用好不好,主要看以下几个方面:防护能力:高防服务器的防护能力是选择的重要指标之一,需要具备对各种攻击手段的防范能力,如DDoS攻击、CC攻击、SQL...

PHP8新特性之JIT案例讲解

PHP8 alpha1已经在昨天发布,相信关于JIT是大家最关心的,它到底怎么用,有什么要注意的,以及性能提升到底咋样?首先,我们来看一张图:左图是 PHP 8之前的Opcache流程示意图, 右图是...

php文件下载后无法打开的处理方案及代码

PHP下载图片后文件打开显示损坏问题用php写个图片下载方法,测试发现下载的图片大小都没问题,但是无法打开文件。解决方法如下:首先打开文件下载代码,增加ob_clean();flush();完整下载图...

GPU服务器主要是用来干什么的租用美国显卡服务器如何选择合适的

很多人其实都听说过服务器,服务器在互联网中是非常重要的设施,需要承载不同数量的人数流量访问,这对于服务器是有着严格要求的,要有能够快速吞吐、稳定性和长时间运行的能力。近几年GPU服务器逐渐走入人们的视...

法国服务器在哪里购买便宜

法国服务器在哪里购买便宜?要购买便宜的法国服务器,您可以考虑以下几个方面:比较多家供应商的价格:在网络上搜索并比较各家法国服务器提供商的价格和服务内容,找到价格合理、服务质量好的供应商。节假日或者特别...

php两种基本的输出方法及实例详解

在 PHP 中,有两种基本的输出方法:echo 和 print。echo 和 print 之间的差异echo - 输出一个或多个字符串,可以接受多个参数并且没有返回值print - 只能输出一个字符串...