0

如果我没记错的话,prepared statements 会更快,因为它们只是第一次发送到 RDBMS,然后只有在需要执行时才发送参数。

在使用 Doctrine2 的 DBAL 时,我应该总是使用准备好的语句,还是只在瓶颈中使用?我可以拥有的准备好的语句的数量是否有限制?

Doctrine2 的 ORM 呢?它是默认使用普通查询还是使用准备好的语句?

4

2 回答 2

2

关于性能,几乎不会出现一个脚本多次运行查询的情况。因此,准备好的语句“更快”的好处几乎不存在。

准备好的语句不允许 SQL 注入的好处也不是很正确。准备好的语句在动态查询的可能性方面有一些限制,它们本身并不抗注入。你可以少做坏事,但不能为零。

每当尝试优化事物时:测量。并首先优化正确的东西。例如,如果你有一个慢查询,你应该首先检查它的执行计划,看看是否所有的索引都被正确使用。从非准备语句切换到准备语句不会有太大变化。

于 2013-08-09T00:08:56.187 回答
0

建议始终对所有数据库服务器使用准备好的(或至少参数化的)语句,这不仅是为了提高速度,还因为它有助于防止 SQL 注入攻击。

于 2013-08-08T23:59:44.520 回答