PHP中进行基础数据库操作怎样优化
Admin 2022-09-17 群英技术资讯 788 次浏览
这篇文章主要讲解了“PHP中进行基础数据库操作怎样优化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中进行基础数据库操作怎样优化”吧!设计一个数据表如下:
create table optimization(
id INT NOT NULL AUTO_INCREMENT,
value VARCHAR(10) NOT NULL,
PRIMARY KEY(id)
);
现在有一个业务需求需要批量插入数据。
先来看看下面这一段代码:
<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = 'root';
try {
$dbh = new PDO($dsn, $user, $password);
} catch(PDOException $e) {
echo 'Connection failed: ' , $e->getMessage();
}
$begin = microtime(true) * 1000;
$count = 100;
$stmt = $dbh->prepare('INSERT INTO `optimization` (id, value) VALUES(:id, :value)');
$stmt->bindParam(':id', $id);
$stmt->bindParam(':value', $value);
for ($i = 0; $i < $count; $i++)
{
$id = '';
$value = $i;
$stmt->execute();
}
$end = microtime(true) * 1000;
echo 'excuted : ' , ($end - $begin) , ' ms';
经过测试,上面代码运行结果如下:
1、excuted : 7601.4348144531 ms
2、excuted : 7476.4270019531 ms
3、excuted : 7674.4387207031 ms
平均:7584.100179036433 ms
再来看看第二段代码:
<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = 'root';
try {
$dbh = new PDO($dsn, $user, $password);
} catch(PDOException $e) {
echo 'Connection failed: ' , $e->getMessage();
}
$begin = microtime(true) * 1000;
$dbh->beginTransaction();
try {
$count = 100;
$sql = 'INSERT INTO `optimization` (id, value) VALUES ';
$sql_arr = array();
$sql_str = '';
for ($i = 0; $i < $count; $i++)
{
$sql_arr[] = ("('', $i)");
}
$sql_str = implode(',', $sql_arr);
$sql .= $sql_str;
$stmt = $dbh->prepare($sql);
$stmt->execute();
$dbh->commit();
} catch(Exception $e) {
$dbh->rollBack();
echo $e->getMessage() . '<br>';
}
$end = microtime(true) * 1000;
echo 'excuted : ' , ($end - $begin) , ' ms';
上面这段代码的运行结果如下:
1、excuted : 99.005859375 ms
2、excuted : 103.00610351562 ms
3、excuted : 68.00390625 ms
平均:90.00528971354 ms
##分析 可以看出,在第二段代码中,使用了批量插入,此时的效率比第一段提高了84%。原因如下:
因此,在第二段代码中,通过合并SQL语句来实现减少SQL语句解析的次数以及PHP与MySQL连接的次数来达到减少网络传输IO的开销。
注意: 1、SQL语句是有长度限制的,因此,在进行SQL语句合并时务必不能超过SQL长度限制,通过设置max_allowed_packet可以修改,默认是1M,测试时修改为8M。
总结
在进行对数据库的批量操作(如:插入、更新、修改)时,应当尽可能将SQL语句合并后再执行而不是在循环中依次执行。
关于“PHP中进行基础数据库操作怎样优化”的内容今天就到这,感谢各位的阅读,大家可以动手实际看看,对大家加深理解更有帮助哦。如果想了解更多相关内容的文章,关注我们,群英网络小编每天都会为大家更新不同的知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
PHP7栏目讲解PHP7如何快速安装WEB服务器,web服务器你可以认为是网站所赖以生存的环境,网站需要运行在web服务器里面。有需要的朋友可以看看学习学习。
php关闭数据库的命令是“mysqli_close()”。在php中,当数据库操作完成以后,可以使用mysql_close()函数来关闭数据库连接,语法格式“mysqli_close(要关闭的MySQL连接);”。
这篇文章主要给大家介绍了关于PHP中信息格式化操作的相关资料,主要运用的是专门用于信息格式化的MessageFormatter类,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
这篇文章给大家分享的是如何使用phpQuery实现采集网的操作,小编认为phpQuery采集网页的操作是非常方便,因此分享给大家作参考,有需要的朋友可以了解一下,下面我们一起来看看。
直接用PHP就可以发送,无需搭建复杂的Email服务。介绍它提供的功能包括:*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址*。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008