我已经阅读了几个有关此问题的问题,但我担心随着这些问题得到解答,PDO库的新版本已经发布,它们可能已经过时了。
我编写了一个构建查询和转义参数的MySQL类,然后根据查询返回结果。目前这个类正在使用内置的mysql函数。
我很清楚使用PDO库的优点,例如:它与其他数据库兼容,存储过程更容易执行等... 但是,我想知道的只是简单;是否更快地使用PDO库,然后使用mysql内置函数?
我刚刚为MsSQL编写了等效的类,所以重写它以使用所有数据库都不会花费我很长时间。是值得的还是PDO库更慢?
答案 0 :(得分:11)
我发现许多情况/项目中的PDO比更本机的模块更快
主要是因为“PDO应用程序”中的许多模式/构建块需要较少的PHP脚本驱动的代码,并且在编译的扩展中执行了更多的代码,并且在脚本中执行操作时 是速度惩罚。没有数据和错误处理的简单合成测试通常不包括这部分,这就是为什么(除了其他问题,例如测量不准确性)我认为“10000x SELECT x FROM foo花了10ms更长时间”的结论更多地忽略了这一点。
我无法为您提供可靠的基准测试,结果取决于周围的应用程序如何处理数据,但即使是综合测试通常也只显示差异,因此您可以更好地花时间优化查询,MySQL服务器,网络等。 ..而不是担心PDO的原始性能。更不用说安全和错误处理......
答案 1 :(得分:1)
我的观察是,PDO似乎对许多连续连接的容忍度较低 - 即在循环中创建的连接。我知道这首先是不好的做法。当我使用mysql_ *时,我的循环查询似乎相当快。但是,当我切换到PDO时,我注意到这些类型的查询的响应时间要长得多。
TL; DR; - 如果切换到PDO并在PHP循环中调用查询,则可能需要重写应用程序以调用单个查询而不是多个连续查询。