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