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

1 篇文章 0 订阅
         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';



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值