<?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;
*
*/