自己參考了Laravel 資料庫:輸出 SQL 語句寫了一個方法方便自己分析執行的sql語句
function toRawSql($getQueryLog)
{
$sqlArr = [];
foreach ($getQueryLog as $k=>$log){
$sql = $log['query'];
foreach ($log['bindings'] as $binding){
$binding = is_numeric($binding) ? $binding : "'".$binding."'";
//正則匹配替換
$sql = preg_replace('/\?/',$binding,$sql,1);
}
//輸出sql語句
$sqlArr[$k]['sql'] = $sql;
//執行時間
$sqlArr[$k]['time'] = $log['time'];
//使用explain分析sql語句
$sqlArr[$k]['explain'] = \DB::select('explain '.$log['query'],$log['bindings']);
}
return $sqlArr;
}
使用,我這邊是把方法註冊為全域性函式
DB::connection()->enableQueryLog();
//
//執行程式碼
dd(toRawSql(DB::getQueryLog()));
輸出如下,可以比較方便的檢視完整sql語句和explain分析sql語句,通過分析explain再對sql語句進行相應的語句優化,是否新增索引
explain分析可檢視一張圖徹底搞定 explain
如果有問題,請指出
本作品採用《CC 協議》,轉載必須註明作者和本文連結