存储过程优缺点

优点:

(1)减少网络通信量。

     调用一个行数不多的存储过程与直接调用 SQL 语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行 SQL 语句,那么其性能绝对比一条一条的调用 SQL 语句要高得多。

(2)执行速度更快。

     A、首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化 。

     B、存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。

(3)更强的适应性。

     由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。一个存储过程可以用于应用程序代码的不同位置。

(4)分布式工作。

     应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。

     存储过程可以重复使用,可减少数据库开发人员的工作量。

(5)更好的版本控制。

         通过使用 Microsoft Visual SourceSafe 或某个其他源代码控制工具,您可以轻松地恢复到或引用旧版本的存储过程。

(6)安全性高。

         可设定只有某此用户才具有对指定存储过程的使用权。

(7)可维护性高。

         更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

(8)增强安全性。

            A、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;

            B、提高代码安全,防止 SQL 注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);

            C、SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。

===============================================================================

缺点:

1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。

2.可移植性差

由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。 如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。

3. 大量采用存储过程进行业务逻辑的开发致命的缺点是很多存储过程不支持面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装, 从而无法形成通用的可支持复用的业务逻辑框架。

4.代码可读性差,相当难维护。

posted @ 2012-11-27 21:41  盘古大神  阅读(174)  评论(0编辑  收藏  举报