From 295da181dc916e39cb8486ab7bf0951ee85ebd6a Mon Sep 17 00:00:00 2001 From: thinkphp Date: Tue, 26 Jan 2016 15:06:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0SQL=E6=80=A7=E8=83=BD?= =?UTF-8?q?=E5=88=86=E6=9E=90=EF=BC=88=E5=BC=80=E5=90=AF=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=B0=83=E8=AF=95=E6=A8=A1=E5=BC=8F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/db/Driver.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/library/think/db/Driver.php b/library/think/db/Driver.php index 4c70d834..2ba26f11 100644 --- a/library/think/db/Driver.php +++ b/library/think/db/Driver.php @@ -1170,7 +1170,17 @@ abstract class Driver $this->modelSql[$this->model] = $this->queryStr; // 记录操作结束时间 Debug::remark('queryEndTime', 'time'); - Log::record($this->queryStr . ' [ RunTime:' . Debug::getRangeTime('queryStartTime', 'queryEndTime') . 's ]', 'sql'); + $log = $this->queryStr . ' [ RunTime:' . Debug::getRangeTime('queryStartTime', 'queryEndTime') . 's ]'; + // SQL性能分析 + if (0 === stripos(trim($this->queryStr), 'select')) { + $pdo = $this->linkID->query("EXPLAIN " . $this->queryStr); + $result = $pdo->fetch(PDO::FETCH_ASSOC); + if (strpos($result['extra'], 'filesort') || strpos($result['extra'], 'temporary')) { + Log::record('SQL:' . $this->queryStr . '[' . $result['extra'] . ']', 'warn'); + } + $log .= '[ EXPLAIN : ' . var_export($result, true) . ' ]'; + } + Log::record($log, 'sql'); } } }