mysql存储过程的利弊_mysql存储过程的优缺点
⼀、存储过程介绍:
存储过程(Stored Procedure)是⼀组为了完成特定功能的SQL 语句集,经编译后存储在数据库。⽤户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执⾏它。
1.存储过程只在创造时进⾏编译,以后每次执⾏存储过程都不需再重新编译,⽽
⼀般SQL 语句每执⾏⼀次就编译⼀次,所以使⽤存储过程可提⾼数据库执⾏速
度。2.当对数据库进⾏复杂操作时(如对多个表进⾏
mysql存储过程使用
Update,Insert,Select,Delete 时),可将此复杂操作⽤存储过程封装起来
与数据库提供的事务处理结合⼀起使⽤。3.存储过程可以重复使⽤,可减少数据库开发⼈员的⼯作量。4.安全性⾼,可设定只有某个⽤户才具有对指定存储过程的使⽤权。
⼆、使⽤存储过程的优缺点:
相对于直接使⽤SQL 语句,在应⽤程序中直接调⽤存储过程有以下好处:
1.减少⽹络通信量:调⽤⼀个⾏数不多的存储过程与直接调⽤SQL 语句的⽹络通信量可能不会有很⼤的差别,可是如果存储过程包含上百⾏SQL 语句,那么其性能绝对⽐⼀条⼀条的调⽤SQL 语句要⾼得多。
2.执⾏速度更快:有两个原因:⾸先,在存储过程创建的时候,数据库已经对其进⾏了⼀次解析和优化。其次,存储过程⼀旦执⾏,在内存中就会保留⼀份这个存储过程,这样下次再执⾏同样的存储过程时,可以从内存中直接调⽤。
3.更强的适应性:由于存储过程对数据库的访问是通过存储过程来进⾏的,因此数据库开发⼈员可以在不改动存储过程接⼝的情况下对数据库进⾏任何改动,⽽这些改动不会对应⽤程序造成影响。
4.分布式⼯作:应⽤程序和数据库的编码⼯作可以分别独⽴进⾏,⽽不会相互压制。
5.可以防⽌sql注⼊。
缺点:
1.如果更改范围⼤到需要对输⼊存储过程的参数进⾏更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新GetValue() 调⽤,等等,这时候估计⽐较繁琐了。
2.可移植性差  由于存储过程将应⽤程序绑定到 SQL Server,因此使⽤存储过程封装业务逻辑将限制应⽤程序的可移植性。
三、存储过程(stored procedure)、存储例程(store routine)、存储函数区别:
Mysql存储例程实际包含了存储过程和存储函数,它们被统称为存储例程。