使用更多存储过程会影响应用程序的性能吗?

时间:2013-10-21 11:36:37

标签: sql sql-server-2005

在应用程序中使用更多存储过程会导致应用程序的低性能吗?是否会降低网络应用的速度?

我正在使用SQL server 2005数据库

2 个答案:

答案 0 :(得分:2)

SQL Server基本上执行这些步骤来执行任何查询(存储过程调用或临时SQL语句):

  1. 语法检查查询
  2. 如果没问题 - 它会检查计划缓存,看看它是否已经有该查询的执行计划
  3. 如果有执行计划 - 该计划被(重新)使用并且执行了查询
  4. 如果还没有计划,则确定执行计划
  5. 该计划存储在计划缓存中以供以后重用
  6. 执行查询
  7. 重点是:临时SQL和存储过程是非常好的没有区别

    如果ad-hoc SQL查询正确地使用参数 - 无论如何都应该这样做,以防止SQL注入攻击 - 它的性能特征是没有区别,并且绝对是< 没有比执行存储过程更差

    存储过程具有其他好处(例如,无需授予用户直接表访问权限),但在性能方面,使用正确的参数化临时SQL查询与使用存储一样高效程序

    非参数化查询上使用存储过程更好,主要有两个原因:

    • 由于每个非参数化查询都是对SQL Server的新的,不同的查询,因此必须针对每个查询执行确定执行计划的所有步骤(从而浪费时间) - 并且还浪费计划缓存空间,因为将执行计划存储到计划缓存中最终并没有真​​正帮助,因为该特定查询可能再次执行)

    • 非参数化查询存在SQL注入攻击的风险,应该不惜一切代价避免

答案 1 :(得分:0)

使用更多存储过程“那么必要的是什么?”然后是的,这将影响您的应用程序。

如果您要检索的所有必需数据都是通过存储过程进行的,那么这将是检索数据的最佳方式。

您也可以回答这个问题,是的,删除存储过程会加快您的应用程序速度,但我确信无法工作或内容/功能少得多......

我会更专注于数据库的设计方式。

确保参照完整性(在表之间设置关系)。

使用主键和索引。

无论如何,这些对于加速应用程序,数据检索部分都会产生实际影响。