最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php優(yōu)化查詢foreach代碼實例講解

 更新時間:2021年03月22日 09:10:22   投稿:newname  
這篇文章主要介紹了php優(yōu)化查詢foreach代碼實例講解,列舉了代碼實例和測試結(jié)果,有感興趣的同學(xué)可以學(xué)習(xí)下

php代碼優(yōu)化

應(yīng)避免在php foreach里面進(jìn)行sql查詢
以下代碼示例使用了laravel的操作數(shù)據(jù)庫api,eloquent orm

foreach里面執(zhí)行兩次sql查詢

// $datas 要返回的數(shù)據(jù)
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里面執(zhí)行一次sql查詢

foreach ($datas as $_v) {
  // todo
  // 簡單的優(yōu)化使得兩次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里面執(zhí)行了數(shù)據(jù)庫查詢
**應(yīng)避免在foreach中執(zhí)行sql查詢**
此處我的做法是再加一層foreach+if來代替sql查詢
// 本質(zhì)上是將foreach中的查詢移到外面
// $tmp_data_arr 是存儲在foreach外面執(zhí)行的數(shù)據(jù)庫查詢結(jié)果
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'];
    }
  }
}

小結(jié)

// 返回數(shù)據(jù)
return $datas;

經(jīng)過簡單的優(yōu)化:時間(ms):290 -> 230 -> 180

到此這篇關(guān)于php優(yōu)化查詢foreach代碼實例講解的文章就介紹到這了,更多相關(guān)php優(yōu)化查詢foreach內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Yii2選項卡的簡單使用

    Yii2選項卡的簡單使用

    這篇文章主要為大家詳細(xì)介紹了Yii2選項卡的簡單使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • YII Framework框架教程之緩存用法詳解

    YII Framework框架教程之緩存用法詳解

    這篇文章主要介紹了YII Framework框架教程之緩存用法,結(jié)合實例形式詳細(xì)分析了Yii框架緩存的結(jié)構(gòu),原理,使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2016-03-03
  • php命令行寫shell實例詳解

    php命令行寫shell實例詳解

    這篇文章通過實例給大家介紹了php命令行寫shell的方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07
  • php實現(xiàn)window平臺的checkdnsrr函數(shù)

    php實現(xiàn)window平臺的checkdnsrr函數(shù)

    這篇文章主要介紹了php實現(xiàn)window平臺的checkdnsrr函數(shù),PHP的自帶checkdnsrr函數(shù)只在linux平臺有效,本文就模擬出了一個window下可以使用的checkdnsrr函數(shù),需要的朋友可以參考下
    2015-05-05
  • php 無限級數(shù)據(jù)JSON格式及JS解析

    php 無限級數(shù)據(jù)JSON格式及JS解析

    公司要做個Flash效果的頁面,需要個無限級樹,顯示用戶邀請的好友及其下線,由此就構(gòu)成了無限級的關(guān)系,可能下線有無限多。
    2010-07-07
  • Laravel框架實現(xiàn)的rbac權(quán)限管理操作示例

    Laravel框架實現(xiàn)的rbac權(quán)限管理操作示例

    這篇文章主要介紹了Laravel框架實現(xiàn)的rbac權(quán)限管理操作,結(jié)合實例形式分析了Laravel框架權(quán)限控制rbac相關(guān)數(shù)據(jù)庫創(chuàng)建、讀寫及權(quán)限判斷等操作技巧,需要的朋友可以參考下
    2019-01-01
  • 如何利用http協(xié)議發(fā)布博客園博文評論

    如何利用http協(xié)議發(fā)布博客園博文評論

    這篇文章主要介紹了利用http協(xié)議發(fā)布博客園博文評論的方法,首先,大家要明確給博文提交評論的實質(zhì)就是通過http協(xié)議服務(wù)器發(fā)送一個post請求,需要的朋友可以參考下
    2015-08-08
  • php中PDO方式實現(xiàn)數(shù)據(jù)庫的增刪改查

    php中PDO方式實現(xiàn)數(shù)據(jù)庫的增刪改查

    PDO是mysql數(shù)據(jù)庫操作的一個公用類了,我們不需要進(jìn)行自定類就可以直接使用pdo來操作數(shù)據(jù)庫了,但是在php默認(rèn)配置中pdo是未開啟所以我們必須先在php.ini中開啟它才可以使用。
    2015-05-05
  • TP5(thinkPHP框架)實現(xiàn)后臺清除緩存功能示例

    TP5(thinkPHP框架)實現(xiàn)后臺清除緩存功能示例

    這篇文章主要介紹了TP5(thinkPHP框架)實現(xiàn)后臺清除緩存功能,結(jié)合實例形式分析了thinkPHP5結(jié)合layui插件實現(xiàn)后臺緩存清除相關(guān)的文件遍歷、刪除等操作技巧,需要的朋友可以參考下
    2019-05-05
  • php設(shè)計模式之模板模式實例分析【星際爭霸游戲案例】

    php設(shè)計模式之模板模式實例分析【星際爭霸游戲案例】

    這篇文章主要介紹了php設(shè)計模式之模板模式,基于星際爭霸游戲案例形式分析了php模板模式相關(guān)原理與使用技巧,需要的朋友可以參考下
    2020-03-03

最新評論

韶山市| 怀仁县| 天祝| 溆浦县| 胶南市| 成都市| 桂林市| 三河市| 墨江| 奉化市| 连江县| 威宁| 齐齐哈尔市| 昭苏县| 峨山| 南部县| 灌阳县| 石城县| 永靖县| 紫阳县| 石渠县| 咸宁市| 巢湖市| 南溪县| 隆化县| 拜城县| 华蓥市| 关岭| 扬州市| 安乡县| 安徽省| 陆良县| 永吉县| 安多县| 九龙坡区| 五寨县| 松溪县| 忻城县| 靖宇县| 江阴市| 兖州市|