存储过程优缺点分析

在程序开发中我们经常性的存储过程,可以提升执行效率等,但也也会有一些缺点大家可以根据需要选用

存储过程的优缺点: 

存储过程优点: 
1.由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,StoredProcedure为封装此代码提供了一个替换位置。 

2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划--
实际上是 Microsoft SQL Server为在存储过程中获取由 T-SQL
指定的结果而必须采取的步骤的记录。)缓存改善性能。 
但sql server新版本,执行计划已针对所有 T-SQL
批处理进行了缓存,而不管它们是否在存储过程中,所以没比较优势了。 

3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。 

4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用
(RPC) 处理服务器上的存储过程而提高性能。RPC
封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。 

5.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。 

6.代码精简一致,一个存储过程可以用于应用程序代码的不同位置。 

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

8.增强安全性: 
a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问; 
b、提高代码安全,防止
SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数); 
c、SqlParameter
类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。 

存储过程缺点: 

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

2.可移植性差 

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

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

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

时间: 2024-08-09 11:39:22

存储过程优缺点分析的相关文章

[转]关于SQL分页存储过程的分析

[转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存中,很费内存.游标一建立,就将相关的记录锁住,直到取消游标.游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的操作.而对于多表和大表中定义的游标(大的数据集合

android 原生应用、Web应用、混合应用优缺点分析

最近开发几个项目,牵涉到android的几种开发模式.对于原生态开发.web 应用开发以及混合模式开发,本人认为并不是哪一种就是最好的,哪一种就是最差的,这个完全是根据自己的需求,选择一种合适的开发模式.他们同时具备自己的有点,同时也有自身的缺点,我们根据实际情况,取其中的优点,尽量避免掉缺点,才是最好的开发模式.下面,我们就一同看看,这三种开发模式,到底有什么区别. 一.原生应用 (也称本地开发 Native App) 你使用过微软PowerPoint 或者 Word吧?这些可直接在你电脑上运

数据库索引的优缺点分析

优点:创建索引可以大大提高系统的性能:第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因. 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义. 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间. 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能. 缺点:增加索引也有许多不利的方面:第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增

ASP.NET常用数据绑定控件优缺点分析总结

ASP.NET常用数据绑定控件优缺点分析总结 本文的初衷在于对Asp.net常用数据绑定控件进行一个概览性的总结,主要分析各种数据绑定控件各自的优缺点,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率. 因为这些数据绑定控件大部分都已经封装的很好了,稍微有一些基础的朋友都可以很容易的上手使用,所以本文不涉及具体控件的使用,只在于分析各自的优劣点,但是在下一篇文章里,我会主要讲一下ListBox.GridView.Repeater这三个数据绑定控件的“高效分页”,ListBox和Gri

三种Tomcat集群方式的优缺点分析

三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用DNS轮询,使用Apache R-proxy方式,以及使用Apache mod_jk方式. AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 Tomcat集群方式有三种,分别是: 1.使用DNS轮询. 2.使用Apache R-proxy方式. 3.使用Apache mod_jk方式

试卷生成程序优缺点分析

·程序说明 队友的个人项目完成了项目的所有功能要求. 他使用了如下函数来实现需求: void kuohao(int B[] ,int numA);         //预定公式在括号中的位置 string Pschooltext(int A[],int numA);     //生成一条小学的试题 string Jschooltext(int A[],int numA);     //生成一条初中的试题 string Sschool(int A[],int numA);        //生成一

结对编程——队友代码的优缺点分析

一·项目的需求分析 需求文档中给出5个需求,第一个是用户的登录要求用户名和密码相匹配,并且有着初始的出题类型:需求二则限制题目的操作数和取值范围: 需求三要求我们输入题目数量,这里给出限定条件10-30个题目并且要求同一位老师的题目不能一样:需求四则要我们满足切换出题类型:需求五则 是对题目保存路径和文件的要求. 二·代码优缺点分析 main函数大体框架为:一个循环加一个if的判断语句来确定登陆对象,并且每一个登录对象都有一个唯一的标识,eg:张三1的标识为(0,1),再将其标 识传递给user

分布式缓存中间件优缺点分析(redis、memcache、ehcache)

分布式缓存中间件优缺点分析(redis.memcache.ehcache) 1. redis 优点: 1. 丰富的数据结构,支持字符串(strings).散列(hashes).列表(lists).集合 (sets).有序集合(sorted sets) 2. 主从同步,故障转移 集群 3. 持久化 缺点: 1. 单核,单线程,所以在存储海量数据的时候会极大的影响系统性能 2. memcache     优点: 1. 简单的key-value存储,memcache的key-value只支持Strin

存储过程和触发器优缺点分析

由于要给同学分享一些关于数据库中存储过程和触发器的知识,我想了想,这是很细节的技术,一般只要用了都会很快掌握其使用方法.经过这么多年,我一般在设计数据库的时候也都会或多或少的使用存储过程和触发器,原因很简单:良好的性能,业务也好实现.可是在做上次的项目的时候,由于业务很复杂,存储过程和触发器的数量均都达到上百之多,这是一件很恐怖的事情,尤其是在出了错调试维护的时候,就会想没有这些东西多好.下面我从经验角度梳理一下对存储过程和触发器的看法.        1.触发器是特殊的存储过程. 这句话在教科