代码之家  ›  专栏  ›  技术社区  ›  tuinstoel

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

  •  0
  • tuinstoel  · 技术社区  · 16 年前

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

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

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

    参数化查询和文本查询在性能上有相同的差别吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Bill Karwin    16 年前

    关于MySQL,MySQLPerformanceBlog reported 每秒使用未准备好的语句、准备好的语句和查询缓存语句的查询的一些基准他们的结论是准备好的陈述实际上 快14.5% 比MySQL上未准备好的语句。请按链接查看详细信息。

    当然,比率会根据查询而变化。

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

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

        2
  •  1
  •   Preet Sangha    16 年前

    我几乎总是看到速度的提高,但一般来说只是第一次。在加载并缓存这些计划之后,我可能会猜测不同的db引擎在这两种类型中的行为都是相同的。