MySQL的存储过程优缺点

1、存储过程概念

存储过程是一些sql语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序通过存储过程名字调用,也可以从另一个存储过程或触发器调用。

它的参数可以被传递和返回,与应用程序中的函数过程类似,
存储过程可以通过名字来调用,具有输入参数和输出参数。

2、存储过程分类

  1. 返回记录集的存储过程
    ----从数据库返回符合一个或几个条件的记录
  2. 返回数值的存储过程(标量存储过程)
    ----在数据库执行一个有返回值的函数或命令
  3. 行为存储过程
    -----在数据库中的更新和删除操作

3、为什么要是用存储过程?

优点:

(1) 执行速度快:
存储过程只在创建时进行编译,以后每次执行存储过程都不需要重新编译,
而一般SQL语句没执行一次就需编译一次,所以使用存储过程可提高数据库的执行速度。

(2) 减少网络通信量
当对数据库进行复杂操作时,(如对多个表进行insert、update、select、delete时)可将这些复 杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序完成就是多条SQL语句,可能要多次连接数据库,而换成存储过程只需一次连接。

(3) 更强的适应性与复用性
存储过程可以重复使用,提高了可重用性,减少数据库开发人员的工作量。

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

(5) 安全性高,可设定只有某用户才能对指定存储过程的使用权,且存储过程比多条sql稳定,只要数据库不出现问题,基本上是不会出现什么问题的。

(6) 分布式工作——应用程序和数据库的编码工作可以单独进行,减少耦合度。

(7) 更好的版本控制,通过svn等源代码控制工具可以轻松恢复或引用旧版本的存储过程。

4、存储过程的缺点

(1)开发调试差:无良好的IDE开发工具,存储过程的调试比一般SQL要复杂的多。

(2)可移植性差:由于存储过程将应用程序绑定到数据库上,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。