PDO与原生方式对数据库连接插入操作效率对比

本文对比了PHP中PDO和原生mysql连接在数据库操作上的效率,包括连接创建、查询等方面。结果显示,原生连接在创建上的效率是PDO的约100倍,但在查询方面,两者效率相差不大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所周知,php中常见的两种连接数据库的方式有PDO连接和原生的mysql连接(包括mysqli方式)。对于很多初学者来说很想搞明白二者在效率方面的区别,下面就让我们来对比一下。
首先对比二者在创建连接上的区别:
注意:在代码开头写上
set_time_limit(0);//这一句很重要,表示php响应时间没有限制,php默认响应时间为30秒,如果超过就返回错误。
错误信息:Fatal error: Maximum execution time of 30 seconds exceeded in D:\phpStudy\WWW\MoocStudy\PDOStudy\testpdoconn.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

可见在查询方面二者并没有太大的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值