gpt4 book ai didi

php - 在对数据数组进行操作时,PDO 真的比 mysql_* 更快吗?

转载 作者:行者123 更新时间:2023-11-29 04:08:14 25 4
gpt4 key购买 nike

我最近将我的想法从 mysql_* 升级到了 PDO,我有一个简单的问题:

PDO 真的比在 for-each 循环中使用准备好的语句和 execute 比在 mysql 中使用多个调用更快吗?值(value)观呢?

例如,如果我有一个包含 5 个名称的数组,将它们放在 for 循环中的 execute 命令中,对“插入”准备好的语句进行操作 - 调用此在单个查询中使用具有所有 5 个值的旧 mysql 的一次调用在计算速度上会快 5 倍吗?还是出于安全性而非速度的考虑,它是首选?

最佳答案

native prepared statements(你称之为“PDO”)的含义和重要性被大家忽视和误判了。

速度的好处,大家说的那么多,现实中能做到的极其少见,而且往往根本察觉不到。 特别是在 web 开发领域 使用 PDO 所属的 PHP。
另请注意,任何速度优势仅属于查询解析 - 没有像索引重建或查找记录更新所需的时间这样的问题,这些记录曾经受到准备好的语句的影响。

所以,说到像五这样的数字,不要为这种“一次准备多次执行”的事情而烦恼。这不是 PDO 的目的。 PDO 做了两个基本的事情,这使得它优于其他两个可能的扩展:

  • 它一般支持准备好的语句,允许查询中的数据不是直接而是通过占位符。这是您应该使用 PDO 或类似库的唯一原因(尽管您甚至可以轻松地制作旧的 mysql ext 来支持准备好的语句,但 PDO 提供了开箱即用的功能)
  • 它使得这样的支持不像 mysqli 那样痛苦

回到你的问题:

  1. 您可以使用任何您喜欢的方式。请记住,由于现代数据库引擎的默认设置,多个插入最好包含在一个事务中
  2. 无论您选择哪种方式,任何动态值都应该仅通过占位符添加到查询中。如果你还不服气,欢迎阅读一篇article I wrote on the matter (which is still incomplete, but have a through explanation on the real meaning of prepared statements) .

附言。 native 准备语句还有一个经常被遗忘(因为很少需要)的小好处 - 如果使用 native 准备语句(并由 msqlnd 驱动程序支持),则返回的数据已经根据其类型进行了格式化。

关于php - 在对数据数组进行操作时,PDO 真的比 mysql_* 更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com