PDO参数化与非参数化查询速度


PDO parameterized vs non-parameterized query speed

从我最近几个月对PHP-PDO的使用中我了解到,您可以先执行PREPARE语句,然后再运行查询。事实上,如果我要在一个复杂的连接上执行SELECT,改变where条件,重复多次,我可以看到它的有用性。

或者,类似地,如果我想插入多个记录。

然而,如果我知道我只想运行语句一次,我不应该只是执行查询吗?我基本上查询了两次数据库

这取决于您是否需要转义以防止sql注入。

根据PDO::quote上的手册:

如果你正在使用这个函数来构建SQL语句,你是强烈建议使用PDO::prepare()来准备SQL语句使用绑定参数,而不是使用PDO::quote()来插值用户输入到SQL语句中。带界的预备语句参数不仅更便携,更方便,不受SQL的影响注入,但执行起来通常比内插快得多查询,因为服务器端和客户端都可以缓存编译后的表单

以下是基准测试:http://jnrbsn.com/2010/06/mysqli-vs-pdo-benchmarks

预处理语句在速度方面接近在误差范围内,因此在大多数情况下可以认为是无关紧要的。