储存过程的优缺点

储存过程

定义:

  1. 用户通过制定存储过程的名称并给出参数来执行它;
  2. SQL Server为了实现特定任务,而将一些多次调用的固定操作语句编写成程序段,这些程序段存储在服务器上,由数据库服务器来调用;
  3. 命名前缀:proc_名称,proc是procedure(过程)的简写 。

优缺点:

       优点:

  1. 重复使用,减少数据库开发人员的工作量;
  2. 封装复杂的数据库操作,简化操作流程;
  3. 减少网络流量,调用过程只需传递名称与参数;
  4. 安全性,防止SQL注入式攻击,同时可设定用户对指定存储过程的执行权限;
  5. 误解:比SQL语句执行快(未被认证)
  6. 可维护性高:更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。
  7. 较快的执行速度:如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

       缺点:     

  1. 调试麻烦;
  2. 移植问题;
  3. 重新编译问题,当引用关系的对象发生改变时,受影响的存储过程、包将需要被重新编译;
  4. 不支持面向对象设计,无法采用面向对象的方式将逻辑业务进行封装,甚至形成通用的可支持服务的业务逻辑框架;

      总结:

普通业务逻辑尽量不要使用存储过程,定时性的ETL任务或报表统计函数可以根据团队资源情况采用存储过程处理。存储过程可以快速解决问题,但是移植性、维护性、扩展性不好,它有时会约束软件的架构,约速程序员的思维,在系统没有性能问题时不建议用存储过程。如果你要完成的功能只是一次或有限次的工作,如数据订正、数据迁移等等,存储过程也可以拿上用场。
如果你的系统很小,并且有50%的开发人员熟练掌握PL/SQL,人员结构稳定,那存储过程可以减少很多代码量,并且性能不错。当系统变复杂了,开发人员多了,存储过程的弊端就会呈现。

posted @   陌少臣  阅读(201)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示