当前位置:首页 > PHP > 正文内容

PHP批量插入的2种方法速度对比

高老师9年前 (2017-06-27)PHP1861

代码1:for循环批量插入100W数据

<?php
set_time_limit(0);


$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "learn";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO shop_goods (title, price) VALUES ('商品1',500)";

for ($i=0; $i <1000000 ; $i++) { 
	mysqli_query($conn, $sql);
}




//计算执行时长
$runtime=time()-$_SERVER['REQUEST_TIME'];
echo $runtime;   //1.03分钟
mysqli_close($conn);

?>

完成时间:1.03分钟

代码2:将所有插入合并为1条Mysql语句,由于语句较长,请执行mysql命令:set global max_allowed_packet =  2*1024*1024*10;避免超长Mysql无法执行。

<?php
set_time_limit(0);


$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "learn";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO shop_goods (title, price) VALUES ";

for ($i=0; $i <1000000 ; $i++) { 
	$sql.="('商品1',500),";
}

$sql = substr($sql,0,strlen($sql)-1);

mysqli_query($conn, $sql);



//计算执行时长
$runtime=time()-$_SERVER['REQUEST_TIME'];
echo $runtime;   //4秒
mysqli_close($conn);

?>

        

完成时间:4秒

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/17.html

分享给朋友:

“PHP批量插入的2种方法速度对比” 的相关文章

PHP获取原始数据

PHP获取原始数据

在项目中需要对图片进行裁剪,前端裁剪完成发送base64给后端,但是很意外的PHP获取到的数据和前端有点差距,之前我都是先加密,后端解密,但是这次依然不行。于是使用filter_input方法轻松解决。$base64 =  filter_input(INPUT_POST...

php 经纬度获取城市,php 经纬度转城市

php 经纬度获取城市,php 经纬度转城市

通过经纬度转换为城市名称,并获得城市的编号,通常在全国类型的商城中比较通用。//经纬度转城市名称(返回城市id,城市名称) //$ak开发密钥,$lat纬度,$lng经度,$type返回数据类型 public function getCityName($ak,$lat,$lng)...

php解决浮点数精度问题

php解决浮点数精度问题

首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php   &n...

 php mysql 行锁,php mysql 行级锁,php mysql 行锁定

php mysql 行锁,php mysql 行级锁,php mysql 行锁定

应用场景:PHP模拟购买,商品数量大于0才能购买常见代码:<?php //连接数据库 $con=mysqli_connect("localhost","ihuohuo","927464cy","ihuohuo");...

redis订阅和发布,redis消息订阅与发布, phpredis订阅和发布

redis订阅和发布,redis消息订阅与发布, phpredis订阅和发布

Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者(publisher),订阅者(subscriber)和频道(channel)。 发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个...

php守护进程

php守护进程

<?php /**  * daemonize让当前脚本为守护进程执行  * @param string $callback 匿名函数  */ function daemonize($callback) {...