# PDO 与 MySQLi 二者效率简单比较
## 连接效率比较
```
<?php
$p_start_time = microtime(true);
for ($i = 1; $i <= 100; $i++) {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'aaaaaa');
}
$p_end_time = microtime(true);
$res = $p_end_time - $p_start_time; // PDO 连接方式耗时
$m_start_time = microtime(true);
for ($i = 1; $i <= 100; $i++) {
mysqli_connect('localhost', 'root', 'aaaaaa', 'test');
}
$m_end_time = microtime(true);
$res2 = $m_end_time - $p_start_time; // MySQL 连接方式耗时
var_dump($res, '<br />', $res2);
if ($res > $res2) {
echo 'PDO 连接数据库是 MySQL 的' . round($res2 / $res) . '倍';
} else {
echo 'MySQL 连接数据库是 PDO 的' . round($res2 / $res) . '倍';
}
```
## 写入速度比较
```
<?php
// PDO 与 MySQLi 两种连接方式写入效率简单比较
$p_start_time = microtime(true);
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'aaaaaa');
// 写入数据表
$sql = <<<EOF
CREATE TABLE IF NOT EXISTS test(
id int unsigned not null
)ENGINE=InnoDB CHARSET utf8 comment '写入测试表';
EOF;
$pdo->exec($sql);
// 使用 PDO 预处理语句写入 500 条数据到数据库
$sql = 'INSERT INTO test VALUES(:id)';
$statement = $pdo->prepare($sql);
for ($i = 1; $i <= 500; $i++) {
$id = 1;
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();
}
unset($pdo); // 销毁 PDO 对象
$p_end_time = microtime(true);
$res = $p_end_time - $p_start_time; // PDO 连接方式耗时
$m_start_time = microtime(true);
// 使用 MySQLi 连接方式写入 500 条数据到数据库
$link = mysqli_connect('localhost', 'root', 'aaaaaa', 'test');
for ($i = 1; $i <= 500; $i++) {
$sql = 'INSERT INTO test VALUES (2)';
mysqli_query($link, $sql);
}
mysqli_close($link); // 关闭连接
$m_end_time = microtime(true);
$res2 = $m_end_time - $p_start_time; // MySQL 连接方式耗时
var_dump($res, '<br />', $res2);
if ($res > $res2) {
echo 'PDO 连接数据库写入速度是 MySQL 的' . round($res2 / $res) . '倍';
} else {
echo 'MySQL 连接数据库写入速度是 PDO 的' . round($res2 / $res) . '倍';
}
```
- 写在前面
- MySQL的使用
- MySQL多表同时删除方案
- MySQL跨表、多表更新SQL语句总结
- MySQL存储引擎
- 安装
- 常规方式编译安装MySQL
- 采用cmake方式编译安装MySQL
- 使用rpm包安装MySQL
- 使用yum方式安装MySQL
- 采用二进制方式免编译安装MySQL
- 多实例的安装
- 什么是多实例
- 多实例的作用、问题以及应用场景
- 多实例安装01【推荐】
- 多实例官方安装方案02
- 启动、用户和权限管理
- 单实例MySQL的启动和关闭的方法
- 设置及修改MySQL root用户密码
- 找回丢失的MySQL root用户密码
- 创建MySQL用户及用户权限管理
- 基础命令的操作
- MySQL库和表相关操作
- MySQL中的索引操作
- MySQL常用命令
- MySQL的错误代码
- MySQL复习秘籍
- 备份与恢复
- 备份
- 恢复
- mysqlbinlog命令
- 服务日志
- 主从复制
- 主从复制部署配置问题汇总
- 主从复制读写分离
- 灾难恢复
- 配置phpmyadmin连接多实例MySQL
- 其他相关
- Sphinx实验
- 中文分词技术
- MySQL语句大全
- 用户创建、权限、删除
- 数据库与表显示、创建、删除
- 表复制及备份还原
- 数据库表中数据操作
- 修改表的列与表名
- 修改表中的数据
- 查询表
- 日志
- 批量修改Mysql表引擎为InnoDB的方法
- 数据库抽象层 PDO
- PDO对象常用方法
- PDO 事务处理
- PDO 与 MySQLi 二者效率简单比较
- 大小写敏感性 lower_case_table_names
- CentOS7安装MySQL5.7密码查看与修改