php優(yōu)化查詢foreach代碼實例講解
php代碼優(yōu)化
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外面
// $tmp_data_arr 是存儲在foreach外面執(zhí)行的數(shù)據(jù)庫查詢結果 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']; } } }
小結
// 返回數(shù)據(jù) return $datas;
經(jīng)過簡單的優(yōu)化:時間(ms):290 -> 230 -> 180
到此這篇關于php優(yōu)化查詢foreach代碼實例講解的文章就介紹到這了,更多相關php優(yōu)化查詢foreach內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
php each 返回數(shù)組中當前的鍵值對并將數(shù)組指針向前移動一步實例
php each函數(shù)用于獲取數(shù)組的鍵值對,并將數(shù)組指針向前移動一步, each函數(shù)經(jīng)常和list結合使用來遍歷數(shù)組。本文章向大家介紹each的基本使用方法,需要的朋友可以參考下2016-11-11PHP使用DOMDocument類生成HTML實例(包含常見標簽元素)
這篇文章主要介紹了PHP使用DOMDocument類生成HTML實例,包含常見標簽元素,如表單、表格、CSS樣式等,最后寫了一個比較完整的例子,給需要的朋友參考下2014-06-06Zend Framework教程之Zend_Helpers動作助手ViewRenderer用法詳解
這篇文章主要介紹了Zend Framework教程之Zend_Helpers動作助手ViewRenderer用法,結合實例形式較為詳細的分析了Zend_Helpers動作助手ViewRenderer的功能、使用方法與相關注意事項,需要的朋友可以參考下2016-07-07Laravel5.1 框架模型創(chuàng)建與使用方法實例分析
這篇文章主要介紹了Laravel5.1 框架模型創(chuàng)建與使用方法,結合實例形式分析了laravel5.1框架模型的原理、創(chuàng)建、更新、獲取等相關操作技巧,需要的朋友可以參考下2020-01-01laravel Task Scheduling(任務調度)在windows下的使用詳解
今天小編就為大家分享一篇laravel Task Scheduling(任務調度)在windows下的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10