CI框架中有一個查看最後一條sql執行的方法
/system/database/DB_driver.php 文件的1085行左右
public function last_query()
{
return end($this->queries);
}
有時需要查看一個頁面中執行的所有sql語句,這在優化時很有幫助。減少sql查詢次數,也是優化的一個方面,其實只要把返回語句的end()去掉就行了!在DB_driver.php中新增如下方法
public function total_query()
{
array_walk($this->queries, function(&$v, $k){
$v = preg_replace('/\n/', ' ', $v) .' #query time:'. $this->query_times[$k] . ' sec';
});
return $this->queries;
}
在控制器需要的地方斷點執行
echo '<pre>';
print_r($this->sdb->total_query());die;
就能看到當前業務中在斷點前執行的所有sql語句以及各語句的執行時間!
Array
(
[0] => SELECT `codes` FROM `advert` WHERE `id` = 16 #query time:0.00062799453735352 sec
[1] => SELECT `id`, `name`, `classify`, IF(id > 127 and classify = 1, 'game', 'html') as gamedir FROM `game_list` WHERE `id` in (20,38,15,67) ORDER BY field(id, 20, 38, 15, 67) #query time:0.0010020732879639 sec
)