【问题标题】:When are stored procedures more performant than queries from application?存储过程何时比来自应用程序的查询更高效?
【发布时间】:2010-11-01 21:30:32
【问题描述】:

存储过程是否有没有它们就无法实现的性能优势?

【问题讨论】:

  • 存储过程什么时候性能更高...总是。

标签: mysql database stored-procedures


【解决方案1】:

可以使用存储过程优化非常大的查询,但差异通常很小。

来自应用程序的大型查询需要通过网络传输,然后由 SQL 服务器解析。

使用存储过程,可以减少传输的数据量,不需要每次调用过程都进行解析。

【讨论】:

    【解决方案2】:

    当您必须在存储过程中执行多个查询时。
    假设有两个查询 - 存在无法弥补的往返行程(假设数据库和应用程序代码不在同一个盒子上 - 在中型到大型应用程序中很常见)。加上管理交易的担忧......

    与其说是性能问题,不如说是有人可以提交任何 SQL,除了参数化查询的安全性之外,这是一个巨大的安全问题。

    【讨论】:

      【解决方案3】:

      如果您只讨论执行时间性能(而不是可维护性),那么存储过程通常优于非参数化查询,因为它们的执行计划由 SQL 服务器自动缓存。

      请注意,与非参数化查询相比,参数化查询也可能由 SQL 服务器缓存,但一般来说,使用存储过程时更有可能获得执行计划缓存,因为这意味着将使用相同的查询来执行无论您在应用程序中的哪个位置调用它,都执行相同的任务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-02
        • 1970-01-01
        • 2015-02-23
        • 1970-01-01
        • 2013-12-07
        相关资源
        最近更新 更多