PDO 参数化与非参数化查询速度
Posted
技术标签:
【中文标题】PDO 参数化与非参数化查询速度【英文标题】:PDO parameterized vs non-parameterized query speed 【发布时间】:2014-06-04 17:49:28 【问题描述】:根据我最近几个月对 php-PDO 的使用,我了解到您可以执行 PREPARE 语句,然后运行查询。事实上,如果我要在复杂的连接上选择 SELECT,改变 where 条件,重复次数,我可以看到它的用处。
或者,类似地,如果我想插入多条记录。
但是,如果我知道我只想运行一次语句,我不应该只执行查询吗?我基本上是在查询数据库两次。
【问题讨论】:
【参考方案1】:这取决于您是否有任何输入需要转义以防止 sql 注入。
根据PDO::quote
上的手册:
如果你使用这个函数来构建 SQL 语句,你就是 强烈推荐使用 PDO::prepare() 来准备 SQL 语句 使用绑定参数而不是使用 PDO::quote() 进行插值 用户输入到 SQL 语句中。带绑定的预处理语句 参数不仅更便携,更方便,不受 SQL 的影响 注入,但执行起来通常比插值快得多 查询,因为服务器端和客户端都可以缓存已编译的表单 查询。
【讨论】:
来吧,你没看到那里写的完全是垃圾吗? @YourCommonSense 你指的是手册还是我的回答:-) 你的答案不多。但是这个“快得多”和“可以缓存”的东西……【参考方案2】:这里是基准测试:http://jnrbsn.com/2010/06/mysqli-vs-pdo-benchmarks
就减速而言,准备好的报表接近误差范围,因此在大多数情况下可以认为是微不足道的。
【讨论】:
以上是关于PDO 参数化与非参数化查询速度的主要内容,如果未能解决你的问题,请参考以下文章
参数化 PDO 查询和“LIMIT”子句 - 不起作用 [重复]