Php PDO库是否比本机MySQL函数快?

Php PDO库是否比本机MySQL函数快?,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我已经阅读了一些关于这个的问题,但我担心这些问题可能已经过时,因为自从这些问题得到回答后,PDO库的新版本已经发布 我编写了一个MySQL类,它构建查询并转义参数,然后根据查询返回结果。目前这个类正在使用内置的mysql函数 我很清楚使用PDO库的优点,例如,它与其他数据库兼容,存储过程更容易执行等等然而,我想知道的只是;使用PDO库是否比使用mysql内置函数更快? 我刚刚为MsSQL编写了等效的类,因此重写它以使用所有数据库不会花费我太多时间。值得还是PDO库速度较慢?我发现在许多情况下/项

我已经阅读了一些关于这个的问题,但我担心这些问题可能已经过时,因为自从这些问题得到回答后,PDO库的新版本已经发布

我编写了一个MySQL类,它构建查询并转义参数,然后根据查询返回结果。目前这个类正在使用内置的mysql函数

我很清楚使用PDO库的优点,例如,它与其他数据库兼容,存储过程更容易执行等等然而,我想知道的只是;使用PDO库是否比使用mysql内置函数更快?


我刚刚为MsSQL编写了等效的类,因此重写它以使用所有数据库不会花费我太多时间。值得还是PDO库速度较慢?

我发现在许多情况下/项目中,PDO甚至比本地模块更快。
主要是因为“PDO应用程序”中的许多模式/构建块需要更少的php脚本驱动代码,在编译的扩展中执行更多的代码,并且在脚本中执行操作时会有速度损失。没有数据和错误处理的简单综合测试通常不包括这一部分,这就是为什么(在其他问题中,例如测量不准确度)我认为“10000x从foo选择x需要10毫秒的时间”的结论往往没有抓住要点。

我无法为您提供可靠的基准测试,结果取决于周围的应用程序如何处理数据,但即使是合成测试通常也只能显示微不足道的差异,因此您最好将时间花在优化查询、MySQL服务器、网络等方面。。。而不是担心PDO的原始性能。更不用说安全性和错误处理了。

我的观察结果是,PDO似乎对许多连续连接的容忍度较低,即在循环中创建的连接。我知道这是一个糟糕的做法。当我使用mysql时,我的循环查询似乎相当快。然而,当我切换到PDO时,我注意到这些类型的查询的响应时间要长得多


TL;博士;-如果切换到PDO并在PHP循环中调用查询,则可能需要重写应用程序以调用单个查询,而不是多个连续查询。

这是一个有趣的问题。。。我总是使用PDO只是因为一件事。。。存储过程。。。我还没有检查速度。。。但是存储过程对我来说已经足够了:P.存储过程总是提高web应用程序的安全性,因为如果你使用它们,就没有“我忘了
mysql\u real\u escape\u string()
call”的地方了,为什么不对它进行基准测试,看看它是否满足您的需求?PDO在很多方面都有优势,即使它稍微慢一点,它仍然有优势。PDO比
mysql
函数稍微慢一点。然而,
mysql
扩展没有准备好的语句。因此,如果您有一个很长的insert,那么通过prepared语句使用PDO会快得多,因为您只需将参数发送到已经解析的查询。然而,速度不应该是决定因素。您应该使用PDO而不是
mysql
函数。另外,使用PDO编写代码要容易得多,而且在一行代码中编写东西也很好,就像使用
mysql
stuff在5-10行代码中编写一样。PDO是一个抽象库,速度稍微慢一点是正常的(即使差异没有那么大),但是您应该选择它,因为它还有其他优点(命名参数、缓冲查询、无需转义等)谢谢你的回复!我本来会亲自测试速度的,但我没有机会谢谢你的回答,这似乎正是我想要的。我并不是真的为10毫秒的差异而烦恼,没有人会注意到这一点,只要它没有实质性的慢,而这似乎不是。即使PDO反对
mysql_xxxx
功能的比较速度相同或稍慢,使用PDO的好处超过了“传统”替代方案,IMO@BenCarey,如果您想对PDO进行基准测试,您必须记住,在使用准备好的语句时,实际上您不仅调用了查询,而且还阻止了注入(如果我没有错过的话)就是这样。但我只需要它一次,它是为了解决一个更深层次的概念性缺陷…@VolkerK这是我编写自己的类的众多原因之一,因此它允许您对不受支持的PDO查询同时使用PDO和内置函数。