PHP大批量插入mysql数据库的优化

 <?php
 /**
  * Created by PhpStorm.
  * User: hanks
  * Date: 6/2/2017
  * Time: 6:03 PM
  */
 //PHP大批量插入mysql数据库的优化

 //建立连接
 date_default_timezone_set('PRC');
 $dbh = new PDO('mysql:host=192.168.6.13;dbname=ksweb', 'hanks', '4763437');

 $sql= "insert into `twenty_million`(`aaa`,`bbb`) values";
 for($i=0;$i<200000;$i++){
     $sql.="('50','60'),";
 };
 var_dump(date("Y-m-d H:i:s"));// /mnt/hgfs/www/test/index.php:16:string '2017-06-07 20:04:27' (length=19)
 $sql = substr($sql,0,strlen($sql)-1);
 //echo '<pre>';print_r($sql);echo '<pre>';die;

 $rs=$dbh->query($sql);
 var_dump($rs);

 var_dump(date("Y-m-d H:i:s"));// /mnt/hgfs/www/test/index.php:23:string '2017-06-07 20:04:32' (length=19)
 //一次性插入20w条数据,耗时5秒
 //使用优化SQL语句:将SQL语句进行拼接,使用 insert into table () values  (),(),(),()然后再一次性插入,如果字符串太长,
 //则需要配置下MYSQL,在mysql 命令行中运行 :set global max_allowed_packet =  2*1024*1024*10;
 /**
  * 表结构如下
  * CREATE TABLE `twenty_million` (
         `id` int(11) NOT NULL AUTO_INCREMENT,
         `aaa` varchar(200) DEFAULT '',
         `bbb` varchar(200) DEFAULT NULL,
         PRIMARY KEY (`id`)
     ) ENGINE=MyISAM AUTO_INCREMENT=20001 DEFAULT CHARSET=utf8;
  *
  */
上一篇:light oj 1248 第六周E题(期望)


下一篇:mysql批量数据脚本