在应用程序中使用更多的存储过程会导致应用程序的性能低下吗?它会降低 Web 应用程序的速度吗?
我正在使用 SQL Server 2005 数据库
SQL Server 基本上通过这些步骤来执行任何查询(存储过程调用或即席 SQL 语句):
关键是:ad-hoc SQL 和存储过程在处理上没有什么不同。
如果一个 ad-hoc SQL 查询正确地使用了参数——无论如何,为了防止 SQL 注入攻击——它的性能特征没有什么不同,而且绝对不会比执行存储过程差。
存储过程还有其他好处(例如,无需授予用户直接表访问权限),但在性能方面,使用适当参数化的 ad-hoc SQL 查询与使用存储过程一样有效。
在非参数化查询上使用存储过程更好,主要有两个原因:
由于每个非参数化查询都是对 SQL Server 的一个新的、不同的查询,因此对于每个查询,它必须经历确定执行计划的所有步骤(因此浪费时间 - 并且还浪费计划缓存空间,因为存储执行计划进入计划缓存最终并没有真正的帮助,因为该特定查询可能不会再次执行)
非参数化查询存在 SQL 注入攻击的风险,应不惜一切代价避免
使用更多的存储过程”那么什么是必要的?那么是的,这将影响您的应用程序。
如果您要检索的所有所需数据都是通过存储过程,那么这在大多数情况下将是检索数据的最佳方式。
您也可以回答,是的,删除存储过程会加速您的应用程序,但我敢肯定不会工作或内容/功能少得多......
我会更多地关注您的数据库是如何设计的。
确保参照完整性(设置表之间的关系)。
使用主键和索引。
无论如何,对于数据检索部分,这些都会对加速您的应用程序产生真正的影响。