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

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

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

代码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生成验证码

<?php //高先生简单验证码. //随机数 //为什么循环0-15的数字 //因为要实现最简单的字母和数字混搭 //16进制0-9   a-f //dechex 十进制转换为16进制 //创建一个四位的验证码. //$nmsg.  ...

php异步执行,php后台运行,如何在windows下让php后台运行

php异步执行,php后台运行,如何在windows下让php后台运行

如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php  D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...

PHP异常处理,PHP自定义错误,PHP记录错误日志

PHP异常处理,PHP自定义错误,PHP记录错误日志

面试中PHP面试官会问调用一个不存在的方法,如何知道是哪个文件哪行调用的?假设方法是getWorkLoad()回答1:开启PHP错误输出,PHP会输出Fatal error: Call to undefined function getWorkLoad() in D:\wwwroot\thinkpa...

php限制方法返回值类型

php限制方法返回值类型

php7新增的特性(1).强制限制只能返回一种类型<?php class task { } //must return an integer function add(): int {    &nb...

php定义常量数组

php定义常量数组

<?php //php7+ define('CONFIG', [     'MYSQL' => '127.0.0.1',     ...

php端口复用,php socket端口复用

php端口复用,php socket端口复用

第一次听说端口复用是在mixphp最新版本中发现的,mixphp启动监听9501端口,现在作者说可以多开几个进程来执行mixphp,我心里想了下再启动不是会端口冲突嘛,但是却没有问题,于是下载mixphp的源码解读,原来是启动http服务器使用new Co\Http\Server('0.0....