关于php 的pdo mysqli mysql查询速度比较

mysql、mysqli、PDO mysql是非持继连接函数而mysqli是永远连接函数。也就是说,mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 有些朋友在编程的时候,mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.当然也更安全。// mysqli, object oriented way 对象。// mysqli, procedural way 过程。1.mysql与mysqli。 阅读详情

虽然PHP官方一直在推PDO,因为接口通用,并建议即使不用PDO,也要用MYSQLI更优化的函数。因为,至少在安全上,可以防SQL注入。

然而,在php5.6上作的测试查询效率上,却是最早mysql函数最快。PDO,不仅慢而且内存开销大。

测试对象是一个20多万条以上数据表,容易在100多M,使用PDO查询时。

报错:Allowed memory size of 134217728 bytes exhausted

必须把php.ini的memory_limit开到1024M才能查询。且查询也没有用到fetchAll只是query。而mysql 和mysqli可以128M内在限制下运行。

循环十次测试结果如下:

start pdo...
...2.3373029232025
...2.3417119979858
...2.2374789714813
...3.187735080719
...2.2158219814301
...2.1973550319672
...2.1981711387634
...2.1964230537415
...3.1916470527649
...2.2108449935913
...2.2034590244293
average 2.6517951250076


start mysqli....
209840...1.6516010761261
209840...0.62066102027893
209840...1.6278269290924
209840...1.6215031147003
209840...0.63836812973022
209840...1.6128249168396
209840...0.64786219596863
209840...1.6257820129395
209840...1.6182668209076
209840...0.64711594581604
209840...1.6313529014587
average 1.3943165063858


start mysql...
209840...1.6287319660187
209840...0.60986304283142
209840...1.6302440166473
209840...0.60696887969971
209840...1.6387059688568
209840...1.6185088157654
209840...0.65926814079285
209840...1.6151170730591
209840...1.6063089370728
209840...0.61127114295959
average 1.2224987983704

可以看出mysqli 和mysql差不多速度,pdo最慢。

代码如下,十分简单的测试。

<?php
  $total=0;
  echo "start pdo...<BR>";

  for ($i=0;$i<=10;$i++) {
    $t=time();
    $m=microtime(true);
    $dsn="mysql:host=localhost;dbname=westmis";
    $PDO_dblink=new PDO ($dsn,'web','admin');
    $PDO_dblink->query("SET NAMES 'GBK'");
    $PDO_dblink->query("select * from 10000_base");
    echo "...";
    $a=time()-$t+microtime(true)-$m;
    echo $a;
    $total=$total+$a;
    echo "<BR>";
    flush();
    }
  $total=$total/10;
  echo "average $total <BR>";

  $total=0;
  echo "<HR> start mysqli....<BR>";
  for ($i=0;$i<=10;$i++) {
    $t=time();
    $m=microtime(true);
    $link=mysqli_connect('localhost','web','admin');
    mysqli_select_db($link,"westmis");
    mysqli_set_charset($link,"GBK");
    $result=mysqli_query($link,"select * from 10000_base");
    echo mysqli_num_rows($result);

     echo "...";
    $a=time()-$t+microtime(true)-$m;
    echo $a;
    $total=$total+$a;
    echo "<BR>";
  }
  $total=$total/10;
  echo "average $total <BR>";

  echo "<HR>";
  echo "start mysql...<BR>";
  $total=0;
  for ($i=1;$i<=10;$i++) {
    $t=time();
    $m=microtime(true);
    $link=@mysql_connect('localhost','web','admin');
    mysql_select_db("westmis");
    mysql_query("SET NAMES 'GBK'");
    $result=mysql_query("select * from 10000_base");
    echo mysql_num_rows($result);

    echo "...";
    $a=time()-$t+microtime(true)-$m;
    echo $a;
    $total=$total+$a;
    echo "<BR>";
    flush();
  }

  $total=$total/10;
  echo "average $total <BR>";

 

PHP的PDO-MySQL和MySQLi性能比较 如果您需要与多种数据库进行交互,并且希望使用统一的API,那么PDO-MySQL是一个不错的选择。在PHP中,与MySQL数据库进行交互的两个主要库是PDO-MySQL和MySQLi。PDO-MySQL是PHP的扩展模块,它提供了一个统一的接口来访问不同类型的数据库,包括MySQL。使用PDO-MySQL,您可以使用标准的面向对象(OO)方式来执行数据库查询和操作。然而,在某些特定情况下,MySQLi可能会稍微快一些,因为它是为MySQL数据库专门设计的。我们将使用相同的查询和操作来测试它们的执行时间。 阅读详情

相关推荐

mysql,mysqli,PDO的各自不同介绍

普通的mysql连接肯定是会被抛弃的 因为每次都要防止sql注入的问题 而且相对来说比较慢 mysqli是在普通mysql的基础上做的一次优化 说实话 很成功 预处理方式完全解决了sql注入的问题 但是唯一的不足点 就是只支持mysql数据库 当然 如果你要是不操作其他的数据库或者 当然这无疑是最好的选择 PDO则是最新出来的一种 连接方式 兼容大部分数据库 也解决了sql注入 但是也有缺点 它只支持php5以上的版本 不过听说在未来的php6中 只支持这种连接 PDO统一所有数据库抽象层对象接口,mysqli只统一mysql的 简单说,PDO可以实现同样的代码对不同数据库的操作,例如你从my

mysqli跟mysql效率对比_php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例...

本文实例讲述了php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率。分享给大家供大家参考,具体如下:/*** 测试pdo和mysqli的执行效率*/header("Content-type:text/html;charset=utf-8");//通过pdo链接数据库$pdo_startTime = microtime(true);$pdo = new PDO("mysql:hos...

weixin_39843151的博客 162

盘点天才少年稚晖君彭志辉的知识体系

一个杰出工程师的工作区间和装备

曲折旅程,艰难人生 2万+

php7下pdo的各种fetch模式速度比较

简介 本文主要介绍通过压测数据来检验php7下pdo的各种fetch模式性能。 准备 一张5000条以上数据的表(批量数据生成) 测试用代码 <?php // ***************需替换*************** $pdo = new PDO('mysql:host=127.0.0.1;dbname=test_db;port=33062', 'root', 'pass

王命风的博客 3641

【STM32-DSP库的使用】基于Keil5 + STM32CubeMX + CMSIS-DSP 手动添加、库添加方式

CMSIS-DSP库在工程中应用遇到的所有问题进行归纳终结

洋洋的博客 1万+

Vivado ChipScope Debugging: Overcoming Common DRC Errors in FPGA Design

本文深入解析Vivado ChipScope调试中常见的DRC错误,特别是AVAL-244和AVAL-245等时钟相关问题,提供实用的Tcl命令解决方案和最佳实践。通过将DRC错误降级为警告的技巧,帮助FPGA设计者高效完成调试流程,同时强调何时应保留DRC检查以确保设计可靠性。

weixin_30335575的博客 416

php中使用mysql、mysqli、pdo的比较

普通的mysql方法在安全性方面应该不是很好,每次需要考虑sql注入的问题,而且速度不是很赞。而mysqli是在mysql基础上进行改进的一次,较好的解决了sql注入问题。 pdo则是最新的数据库抽象方法,pdo高度抽象了数据库操作,项目使用pdo方法可以方便的进行迁移,在不同的数据库之间进行迁移。 在高负载的情况下....

dasongbo7290的博客 172

MySQL等保三级合规实践:如何安全配置root账户的本地与受信主机登录策略

本文详细介绍了MySQL在等保三级合规框架下如何安全配置root账户的本地与受信主机登录策略。通过分析root账户的特殊保护需求,提供三种安全加固方案,包括限制访问范围、限定登录IP和完全禁止远程登录,并指导创建安全的远程管理账户。文章还涵盖了密码策略强化、日志审计配置和网络层防护等关键合规要求,帮助用户实现MySQL的等保三级全面合规。

weixin_42522964的博客 260

php_mysqli 与 pdo 性能对比,php中使用mysql、mysqli、pdo连接数据库的用法和比较

PHP与mySQL的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。一、特性及对比PHP的MySQL扩展是设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口,并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可...

weixin_29658641的博客 773

Mamba vs YOLO:目标检测选型指南(附实际项目对比)

本文深入对比了Mamba和YOLO在目标检测领域的性能差异与应用场景。通过实际项目数据,分析了两者在城市交通监控、工业质检等场景下的表现,提供了详细的选型指南和部署优化建议,帮助开发者根据实时性、精度等需求选择最适合的解决方案。

weixin_29062255的博客 368

数学建模美赛O奖论文研读启示录——从模仿开始

数学建模美赛O奖论文哪些地方比较出彩?我们可以从中学到什么东西?可以从哪些地方进行模仿?我总结了一些O奖论文里我认为比较好的地方,跟大家一起学习交流!

小宇的修炼之路 5429

php_mysqli 与 pdo 性能对比,php中使用mysql、mysqli、pdo的比较

普通的mysql方法在安全性方面应该不是很好,每次需要考虑sql注入的问题,而且速度不是很赞。而mysqli是在mysql基础上进行改进的一次,较好的解决了sql注入问题。pdo则是最新的数据库抽象方法,pdo高度抽象了数据库操作,项目使用pdo方法可以方便的进行迁移,在不同的数据库之间进行迁移。在高负载的情况下.PDO开启长连接能够得到一个相对稳定的负载“值”。但是效率却不是最高的。mysql最...

weixin_39902345的博客 337

ROS-Industrial :simple_message

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 概述2. 协议(Protocol)3. HEADER解析3.1 MSG_TYPE3.2 COMM_TYPE3.3 REPLY CODE 1. 概述 Simple_Message是ROS-Industrial的一部分,定义了用于与工业机器人控制器通信的简单消息连接协议。另外还包括处理连接受限系统的处理器和管理器类。 2. 协议(Protocol) 简单消息(simplemessage)协议定义了ROS的驱动层和机器人控制器之.

flsxyw的博客 780

php中mysql和mysqli_PHP中MySQL、MySQLi和PDO的用法和区别【原创】

PHP的MySQL扩展(优缺点)设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口;并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可以与MySQL4.1.3或更新的数 ;据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性。PHP的mysqli扩展mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MyS...

weixin_34123197的博客 244

暗黑破坏神2重制版 mod制作教程(一)

暗黑2重制版mod修改教程

hhhh2312的博客 7455

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

php pdo mysql_PHP连接到mysql的方法-mysqli和PDO

本篇文章给大家分享的内容是PHP连接到mysql的方法-mysqli和PDO,有需要的朋友可以参考一下看书的时候提及了PDO扩展连接数据库,之前一直用用的mysql扩展和mysqli扩展,基本没用PDO,所以查了一些资料,特地记录转载,PHP的MySQL扩展(优缺点)设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口;并且是针对MySQL4.1.3或更...

weixin_28984379的博客 236

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

mysqli 比 mysql 速度_PHP的MySQL库之Pdo-Mysql与Mysqli性能对比

我们知道,LAMP(Linux + Apache + Mysql + PHP)是一种很常用的WEB服务器搭配。PHP中有很多MySQL库以方便我们的使用,比如说:Pdo-Mysql、Mysqli等等。那么究竟哪种方式性能最佳呢?本文我们对以上的连接方式作了性能对比试验:1、建一个Mysql数据库,新建一张InnoDB表(参考某项目的核心表),然后用存储过程生成100万条数据。2、搭一PHP环境,每...

weixin_35641153的博客 306

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

php连接mysql pdo_PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)

PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的。因此这个扩展虽然可以与MySQL4...

weixin_29361879的博客 209

pdo mysql mysqli教程_MYSQL MYSQLI PDO

PHP的MySQL扩展(优缺点)设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口;并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可以与MySQL4.1.3或更新的数 ;据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性。PHP的mysqli扩展mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MyS...

weixin_39889214的博客 160

阿里云mysql pdo_PHP中MySQL、MySQLi和PDO的用法和区别

PHP的MySQL扩展(优缺点)设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口;并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可以与MySQL4.1.3或更新的数 ;据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性。PHP的mysqli扩展mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MyS...

weixin_39947016的博客 140

pdo mysql mysqli教程_PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】

本文实例讲述了PHP连接MySQL数据库的三种方式。分享给大家供大家参考,具体如下:PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,...

weixin_29790897的博客 252

php mysql mysqli pdo_PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)

PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的。因此这个扩展虽然可以与MySQL4...

weixin_35487052的博客 252

php mysql mysqli pdo_PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】

本文实例讲述了PHP连接MySQL数据库的三种方式。分享给大家供大家参考,具体如下:PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,...

weixin_33865942的博客 142

ubuntu php连接mysql数据库_php连接mysql数据库的几种方式(mysql、mysqli、pdo)-转载

php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。一、特性及对比PHP的MySQL扩展是设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口,并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可...

weixin_34868242的博客 760

PHP中MySQL、MySQLi和PDO的用法和区别

PHP的MySQL扩展(优缺点) 设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口; 并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可以与MySQL4.1.3或更新的数 ; 据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性。 PHP的mysqli扩展 mysqli扩展,我们有时称之为

w1olol的博客 1万+

PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)

PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。 PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版本设计的。因此这个扩展虽然可以与MySQ...

Miss Dan的博客 458
上一篇: Linux Mint 打印机配置文件及相关文件的位置
下一篇: HP BL460C iLO 1.70 固件下载及无法升级原因等
梦中孩子
博客等级 码龄24年 38粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值