PDO与原生方式对数据库连接插入操作效率对比
众所周知,php中常见的两种连接数据库的方式有PDO连接和原生的mysql连接(包括mysqli方式)。对于很多初学者来说很想搞明白二者在效率方面的区别,下面就让我们来对比一下。
首先对比二者在创建连接上的区别:
注意:在代码开头写上
set_time_limit(0);//这一句很重要,表示php响应时间没有限制,php默认响应时间为30秒,如果超过就返回错误。
错误信息:Fatal error: Maximum execution time of 30 seconds exceeded in D:phpStudyWWWMoocStudyPDOStudy estpdoconn.php on line 11
set_time_limit(0);//这一句很重要,php默认响应时间为30秒,如果超过就返回错误。
$begiontime=microtime(true);
for($i=0;$i<100;$i++) {
$pdo = new PDO("mysql:host=localhost;dbname=myphp", "root", "123456");
}
$endtime=microtime(true);
$times=$endtime-$begiontime;
$btime=microtime(true);
for($j=0;$j<100;$j++) {
$conn = mysql_connect("localhost", "root", "123456");
mysql_select_db("myphp");
}
$etime=microtime(true);
$times2=$etime-$btime;
echo $times;
echo "<br/>";
echo $times2;
执行的结果:
101.23779082298
1.0220580101013
由此可见,原生连接方式效率是PDO连接方式的100倍。
接下来我们来对比二者在查询方面的效率:
具体代码:
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2017-4-22
* Time: 18:42
*/
set_time_limit(0);
$begiontime=microtime(true);
$pdo = new PDO("mysql:host=localhost;dbname=myphp", "root", "123456");
$sql="insert into bank values(?,?,?)";
$stmt = $pdo->prepare($sql);
$name="test";
$sum=1000;
for($i=0;$i<1000;$i++) {
$stmt->bindParam(1,$i);
$stmt->bindParam(2, $name);
$stmt->bindParam(3, $sum);
$stmt->execute();
}
$endtime=microtime(true);
$times=$endtime-$begiontime;
$pdo=null;
$btime=microtime(true);
$conn = mysql_connect("localhost", "root", "123456");
mysql_select_db("myphp");
for($i=0;$i<1000;$i++) {
$conn->query("insert into bank values($i,"wang",2000)");
}
mysql_close();
$etime=microtime(true);
$times2=$etime-$btime;
echo $times;
echo "<br/>";
echo $times2;
执行结果:
33.927941083908
35.266016960144
由此可见,二者的差别不是太大。
最后我们来对比二者在查询方面的差别:
set_time_limit(0);
$begiontime=microtime(true);
$pdo = new PDO("mysql:host=localhost;dbname=myphp", "root", "123456");
$sql="select * from bank";
$stmt = $pdo->query($sql);
$endtime=microtime(true);
$times=$endtime-$begiontime;
$pdo=null;
$btime=microtime(true);
$conn = mysql_connect("localhost", "root", "123456");
mysql_select_db("myphp",$conn);
mysql_query("select * from bank");
mysql_close();
$etime=microtime(true);
$times2=$etime-$btime;
echo $times;
echo "<br/>";
echo $times2;
结果(6000行数据):
1.0480599403381
1.0350589752197
可见在查询方面二者并没有太大的区别。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 数组查找方法
- 下一篇: vuejs中v-if和v-show的区别以及v-show不起作用