0

很多人都知道使用参数化查询来防止sql注入攻击很重要。

在进行在线事务处理时,sqlite 和 oracle 中的参数化查询也快得多,因为查询优化器不必在执行之前重新解析每个参数化的 sql 语句。我已经看到当你使用参数化查询时,sqlite 的速度提高了 3 倍,当你在一些具有大量并发的极端情况下使用参数化查询时,oracle 的速度可以提高 10 倍。

其他数据库如 mysql、ms sql、db2 和 postgresql 怎么样?

参数化查询和文字查询之间的性能差异是否相同?

4

2 回答 2

2

关于 MySQL,MySQLPerformanceBlog报告了非准备语句、准备语句和查询缓存语句每秒查询的一些基准。他们的结论是,准备好的语句实际上比 MySQL 上的非准备好的语句快 14.5% 。点击链接了解详情。

当然,比率会因查询而异。

有些人认为会有一些开销,因为您要从客户端到 RDBMS 进行额外的往返——一个是准备查询,第二个是传递参数并执行查询。

但现实情况是,这些都是在没有实际测量的情况下做出的错误假设。我从未听说过在任何品牌的数据库中准备好的语句都会变慢。

于 2010-04-28T20:23:28.790 回答
1

我几乎总是看到速度的提高——但一般来说只是第一次。在加载和缓存计划后,我推测各种数据库引擎对于任何一种类型的行为都是相同的。

于 2009-08-23T09:35:12.253 回答