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命令导入数据的方式更加快捷。

标签: none

添加新评论