PHP大批量插入数据库的3种方法和速度对比
2016-04-14 14:32
561 查看
第一种,使用insert into 插入,最后显示为:23:25:05 01:32:05 也就是花了2个小时多!
第二种,使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒
第三种,
使用优化SQL语句:将SQL语句进行拼接,使用 insert into table () values (),(),(),()然后再一次性插入,如果字符串太长,
则需要配置下MYSQL,在mysql 命令行中运行 :set global max_allowed_packet = 2*1024*1024*10;消耗时间为:11:24:06 11:25:06;
插入200W条测试数据仅仅用了1分钟!
$params = array(‘value'=>'50′); set_time_limit(0); echo date(“H:i:s”); for($i=0;$i<2000000;$i++){ $connect_mysql->insert($params); }; echo date(“H:i:s”);
第二种,使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒
echo date(“H:i:s”); $connect_mysql->query(‘BEGIN'); $params = array(‘value'=>'50′); for($i=0;$i<2000000;$i++){ $connect_mysql->insert($params); if($i%100000==0){ $connect_mysql->query(‘COMMIT'); $connect_mysql->query(‘BEGIN'); } } $connect_mysql->query(‘COMMIT'); echo date(“H:i:s”);
第三种,
使用优化SQL语句:将SQL语句进行拼接,使用 insert into table () values (),(),(),()然后再一次性插入,如果字符串太长,
则需要配置下MYSQL,在mysql 命令行中运行 :set global max_allowed_packet = 2*1024*1024*10;消耗时间为:11:24:06 11:25:06;
插入200W条测试数据仅仅用了1分钟!
$sql= “insert into twenty_million (value) values”; for($i=0;$i<2000000;$i++){ $sql.=”('50′),”; }; $sql = substr($sql,0,strlen($sql)-1); $connect_mysql->query($sql);
相关文章推荐
- [转链接]PHP运算符优先级的一个例外
- php测试程序运行时间和占用内存情况
- ThinkPHP 3.1.2 视图-1
- ThinkPHP 3.1.2 视图-1
- ThinkPHP 3.1.2 视图-1
- iptables允许FTP
- FTP服务添加用户及设置权限
- 个人笔记
- phpstorm10配置xdebug插件,调试程序
- PHP 时间 date,strtotime ,time计算1970开始的第几天
- Sublime Text 3 配置php调试环境介绍
- FTP上传下载以及相关注意点
- QwtPlot简单使用
- PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
- PHP原生态记录Log函数
- Yii之路(第八)
- PHP把对象转换成数组
- php 本地配置根目录
- php字符串处理函数大全
- thinkphp3.2 + soap