PHP执行sql与Mysql下执行sql效率
今天将一个表数据拷贝到另一个表中,特地分析了下这两种执行方式的效率。
第一种:PHP脚本执行。
PHP脚本代码如下:
$limit = 1000; $start = !empty($_GET['start']) ? $_GET['start'] : 0; $query = DB::query("SELECT COUNT(*) FROM temp", 'SILENT'); $count = $query ? DB::result($query, 0) : 0; if($start <= $count) { $query = DB::query("SELECT * FROM temp LIMIT $start, $limit"); while($row = DB::fetch($query)) { $row = daddslashes($row); DB::query("INSERT INTO tests (id, name) values ('$row[conuin]', '$row[openid]')"); } $start += $limit; showmessage('next',"1.php?start=$start"); }
从temp表查询数据,然后插入到tests表中,其中temp表有80W条数据,PHP脚本执行情况:
晚上8点22分开始执行,到晚上10点11分执行完毕,耗时38+11=49分钟。
第二种:Mysql命令行下使用SQL执行。
执行SQL如下:
INSERT INTO tests (id, name) (SELECT conuin as id, openid as name FROM temp);
执行情况:耗时不到2分钟。
可见,Mysql下使用SQL命令导入数据的方式更加快捷。