PHP批量插入数据库的3种方法及速度比较

第一种方法:使用插入到插入中,代码如下所示:


$params =阵列(币值= > 50');
(0)set_time_limit;
回声日期(h:I:S);
($ i = 0;$ i < 2000000;$ + +){
connect_mysql美元->插入($params);
};
回声日期(h:I:S);


最终表现为:23:25:05 01:32:05已超过2小时了!

第二种方法是使用事务提交,批量插入数据库(每10w提交),最后显示的消费时间是22:56:13 23:04:00,总共8分钟,13秒,代码如下:


回声日期(h:I:S);
connect_mysql美元->查询('begin);
$params =阵列(币值= > 50');
($ i = 0;$ i < 2000000;$ + +){
connect_mysql美元->插入($params);
如果($ i = 100000 = 0){
connect_mysql美元->查询('commit);
connect_mysql美元->查询('begin);
}
}
connect_mysql美元->查询('commit);
回声日期(h:I:S);


第三种方法是使用优化的SQL语句:拼接SQL语句,使用INSERT到表()、值()、()、(),然后如果字符串太长,再插入一次。

你需要配置MySQL运行在MySQL命令行:设置全局max_allowed_packet = 2 * 1024 * 1024 * 10;时间:11:24:06 11:25:06;

它只需1分钟插入200W条测试数据!代码如下:


为SQL插入twenty_million(值)值;
($ i = 0;$ i < 2000000;$ + +){
为SQL。=('50 '),;
};
为SQL = substr($ SQL 0,strlen($ SQL)- 1);
connect_mysql美元->查询($ SQL);


最后得出结论,第一种方法在插入海量数据时是最差的,第二种方法在实际中得到了广泛的应用。这第三种方法更适合于插入测试数据或其他低要求,而且速度很快。