1. 程式人生 > 程式設計 >php優化查詢foreach程式碼例項講解

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->ui程式設計客棧d));   // 1
  $_v->user_name  = $user->username;
  $_v->user_avatar = $user->avatar;
}

將sql查詢移到foreach外面

上面兩個方法都不可避免的在foreach裡面執行了資料庫查詢 **應避免在foreach中執行sql查詢** 此處我的做法是再加一層foreach+if來代替sql查詢 // 本質上是將foreach中的查詢移到外面 http://www.cppcns.com
// $tmp_data_arr 是儲存在foreach外面執行的資料庫查詢結果
foreach ($tmp_data_arr as $value) {
  foreach ($datas as $_v) {
 dGLZvU   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優化查詢foreac程式設計客棧h程式碼例項講解的文章就介紹到這了,更多相關php優化查詢foreach內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!