您的位置:首页 > 编程语言 > PHP开发

PHP MySQL批量插入数据的优化方法

2014-12-02 16:58 323 查看
         MySQL批量插入数据的优化方法,废话少说直接贴代码...
<?php
$link = mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('phone', $link) or die(mysql_error());
mysql_query("set names gbk");
$file=file('C:\Users\Administrator\Desktop\手机号段.txt');
$pagestartime=microtime();//开始执行前的时间
$sql="insert into number values";//对sql语句进行分割,是提高效率的关键
for($i=0;$i<count($file);$i++){
$arr=explode(',',$file[$i]);
$sql.="('',$arr[1],$arr[2],$arr[3],$arr[4],$arr[5]),";
}
$sql = rtrim($sql,','); //过滤字符串末端的逗号
$res=mysql_query($sql);
if($res){
echo "信息插入成功<br/>";
}else{
echo "SQL执行失败<br/>";
}
$pageendtime = microtime(); //执行完后的时间
$starttime = explode(" ",$pagestartime);
$endtime = explode(" ",$pageendtime);
$totaltime = $endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
$timecost = sprintf("%s",$totaltime);
echo "<br/>";
echo "共用时:".$timecost."秒";
?>

该方法的核心是对sql语句进行分割,提高效率;当数据量过大时,使用insert ... values的语句过长,就会出现MySQL server has gone away的错误; 这种情况可以通过修改max_allowed_packed的配置参数来避免,

mysql> show global variables like 'max_allowed_packet';

修改参数:mysql> set global max_allowed_packet=1024*1024*1024;

                    mysql> show global variables like 'max_allowed_packet';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php mysql 数据库 sql 优化