同樣的功能,不同的寫法,時間和內存占用差了幾千倍,不廢話,直接上代碼
第一種寫法:
代碼如下:
$Rs=DB::get($_ENV['DB'],3,"SELECT * FROM _xiazhu WHERE uid IN(SELECT id FROM _user WHERE id<5000)");
var_dump($Rs);
內存和時間:
內存使用:96514.53Kb 運行時間:1272.73ms
第二種寫法:
代碼如下:
$Sql='';
$Rs=DB::get($_ENV['DB'],3,"SELECT id FROM _user WHERE id<5000");
$Sql.=(count($Rs)>0) ? " AND id IN(".strtr(json_encode($Rs,JSON_UNESCAPED_UNICODE),array('{"id":"'=>'','"}'=>'','['=>'',']'=>'')).')' : '';
unset($Rs);
$Rs=DB::get($_ENV['DB'],3,"SELECT * FROM _xiazhu WHERE 1=1{$Sql}");
var_dump($Rs);
unset($Sql);
內存和時間:
內存使用:9.77Kb 運行時間:11.97ms
由此可見,如果你不急于追趕開發進度的話,建議你使用第二種方法分開寫,速度會有明顯的差異.
內容來源于網絡如有侵權請私信刪除