存储过程的优缺点及适宜使用的场合详解

数据库 SQL Server
存储过程不仅仅适用于大型项目,对于中小型项目,使用存储过程也是非常有必要的。本文我们主要介绍了使用存储过程的优势以及存储过程适宜使用的场合,希望能够对您有所帮助。

我们知道,存储过程数据库操作中的使用是非常广泛的。它具有速度快、程序简单、可重复使用、安全性高等特点,那么什么时候使用存储过程是比较适合的呢?本文我们就来介绍这一部分内容,希望能够对读者有所帮助。

当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑;还有就是比较复杂的统计和汇总也要考虑,但是过多的使用存储过程会降低系统的移植性。

为了系统的控制方便,例如当系统进行调整时,这是只需要将后台存储过程进行更改,而不需要更改客户端程序。也无需重新安装客户端应用程序。

存储过程不仅仅适用于大型项目,对于中小型项目,使用存储过程也是非常有必要的。

存储过程的威力和优势:

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的SQL语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。

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

4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

存储过程的优点:

1.速度快。尤其对于较为复杂的逻辑,减少了网络流量之间的消耗。

如果有的过程和函数达到了几百行,一个微型编译器,相信用程序就更麻烦了。

2.写程序简单,采用存储过程调用类,调用任何存储过程都只要1-2行代码。

3.升级、维护方便。

4.调试其实也并不麻烦,可以用查询分析器。

5.如果把所有的数据逻辑都放在存储过程中,那么asp.net只需要负责界面的显示功能,出错的可能性最大就是在存储过程。一般情况下就是这样。

存储过程的缺点:

1.可移植性差,我一直采用sql server开发,可是如果想卖自己的东西,发现自己简直就是在帮ms卖东西,呵呵。想换成mysql,确实移植麻烦。

2.采用存储过程调用类,需要进行两次调用操作,一次是从sql server中取到过程的参数信息,并且建立参数;第二次才是调用这个过程。多了一次消耗。

不过这个缺点可以在项目开发完成,过程参数完全确定之后,把所有过程参数信息倒入到一个xml文件中来提高性能。

当一个业务同时对多个表进行处理的时候采用存储过程比较合适。

  1. 使用存储过程在一般情况下会提高性能,因为数据库优化了存储过程的数据访问计划并应用缓存方便以后的查询;
  2. 存储过程单独保护存在于数据库中。客户端可以获取权限执行存储过程,而不需要对底层的具体表设置其他的访问权限;
  3. 存储过程会使得维护起来更加方便,因为通常修改一个存储过程要比在一个已经发布的组件中修改SQL语句更加方便;
  4. 存储过程给底层数据格式增添了额外的抽象层。使得使用存储过程的客户端对存储过程的实现细节以及对底层数据格式是隔离独立的;
  5. 存储过程能够缓解网络带宽,因为可以批量执行SQL语句而不是从客户端发送超负载的请求。

复杂的数据处理用存储过程,如有些报表处理。

多条件多表联合查询,并做分页处理,用存储过程也比较适合。

适当的使用存储过程,能够提高我们SQL查询的性能,以便于提高我们的工作效率。本文就介绍这么多了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. 用企业管理器备份和还原SQL Server数据库
  2. 图解SQL Server注册远程服务器数据库的步骤
  3. 没有SQL Server数据库时怎样打开.MDF文件?
  4. 一个SQL Server数据库删除数据集中重复数据的例子
  5. SQLServer 2008 R2数据库SSAS建模及扩展能力详解
责任编辑:赵鹏 来源: 博客园
相关推荐

2021-10-09 09:52:17

云存储公共云迁移

2009-11-04 16:23:09

ADO.NET存储过程

2018-12-11 10:59:35

Tomcat NginxApache

2009-08-10 17:41:42

C# Singleto

2018-08-28 15:10:16

数据库数据存储Hadoop

2017-10-23 13:20:37

2010-11-11 17:15:13

SQL Server视

2021-09-08 09:00:00

DevOps开发IT

2019-10-10 17:22:07

多云CIO多云策略

2019-05-28 15:20:17

2012-05-03 09:58:19

VLANVLAN划分

2020-07-10 11:30:29

组合式架构传统存储存储

2010-09-02 09:59:52

CSS SpritesCSS

2014-07-24 10:28:40

NginxLVSHAProxy

2010-08-31 14:49:57

CSS居中

2017-11-22 09:00:12

RAID类型磁盘

2010-08-27 09:45:49

CSS Sprites

2014-05-12 09:26:08

2015-04-03 10:43:49

2019-11-15 13:26:17

编程语言微软C语言
点赞
收藏

51CTO技术栈公众号