当前位置: 首页 > 后端技术 > PHP

Laravel打印出完整的sql,执行时间和explain分析

时间:2023-03-30 01:36:48 PHP

我参考了Laravel数据库:输出SQL语句,写了一个方法方便分析执行的sql语句函数toRawSql($getQueryLog){$sqlArr=[];foreach($getQueryLogas$k=>$log){$sql=$log['query'];foreach($log['bindings']as$binding){$binding=is_numeric($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语句语句优化,是否加索引。解释分析可以看一张图。说明有问题请指出