不同数据库的参数化查询的性能

时间:2009-08-23 07:54:54

标签: parameterized multiple-databases

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

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

其他db如mysql,ms sql,db2和postgresql怎么样?

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

2 个答案:

答案 0 :(得分:2)

关于MySQL,MySQLPerformanceBlog reported每秒查询的一些基准测试,包括非预处理语句,预准备语句和查询缓存语句。他们的结论是,准备好的语句实际上比MySQL上未准备好的语句<强> 14.5%。请点击链接了解详情。

当然,比率因查询而异。

有些人认为存在一些开销,因为您正在从客户端到RDBMS进行额外的往返 - 一个用于准备查询,第二个用于传递参数并执行查询。

但实际情况是,这些都是在没有实际测量的情况下做出的错误假设。在任何品牌的数据库中,我都没有听说过准备好的陈述速度较慢。

答案 1 :(得分:1)

我几乎总能看到速度的提升 - 但这只是第一次。在加载和缓存计划之后,我会推测各种数据库引擎在任何一种类型中的行为都相同。