存储过程和sql语句的差别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

存储过程和sql语句的差别
存储过程(Stroed Proceduer)是在⼤型数据库系统中,⼀组为了完成特定功能的SQL语句集,经编译后,存储在数据库中。

⽤户通过指定存储过程的名字并给出参数(如果该存储过程有参数)来执⾏它。

再运⾏存储过程前,数据库已对其进⾏了语法和句法分析,并给出了优化执⾏⽅案。

这种已经编译好的过程可极⼤地改善SQL语句的性能。

由于执⾏SQL语句的⼤部分⼯作已经完成,所以存储过程能以鸡块的速度执⾏。

SQL语句即结构化查询语⾔(Structured Query Language),是⼀种特殊⽬的的编程语⾔,是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本⽂件的扩展名。

SQL语句⽆论是种类还是数量都是繁多的,很多语句也是经常要⽤到的,SQL查询语句就是⼀个典型的例⼦,⽆论是⾼级查询还是低级查询,SQL查询语句的需求是最频繁的。

存储过程包含SQL语句。

存储过程的代码建⽴与规则,已经在之前的⽂章中涉及该篇不再赘述,点击链接查看:,。

存储过程的优点:
存储过程是⼀组预先创建并⽤指定的名称存储在数据库服务器上的 SQL 语句,将使⽤⽐较频繁或者⽐较复杂的操作,预先⽤ SQL 语句写好并存储起来,以后当需要数据库提供相同的服务时,只需再次执⾏该存储过程。

1.具有更好的性能
存储过程是预编译的,只在创建时进⾏编译,以后每次执⾏存储过程都不需再重新编译,⽽⼀般 SQL 语句每执⾏⼀次就编译⼀次,因此使⽤存储过程可以提⾼数据库执⾏速度。

2.功能实现更加灵活
存储过程中可以应⽤条件判断和游标等语句,有很强的灵活性,可以直接调⽤数据库的⼀些内置函数,完成复杂的判断和较复杂的运算。

3.减少⽹络传输
复杂的业务逻辑需要多条 SQL 语句,当客户机和服务器之间的操作很多时,将产⽣⼤量的⽹络传输。

如果将这些操作放在⼀个存储过程中,那么客户机和服务器之间的⽹络传输就会减少,降低了⽹络负载。

4.具有更好的安全性
(1)数据库管理⼈员可以更好的进⾏权限控制,存储过程可以屏蔽对底层数据库对象的直接访问,使⽤ EXECUTE 权限调⽤存储过程,⽆需拥有访问底层数据库对象的显式权限。

(2)在通过⽹络调⽤过程时,只有对执⾏过程的调⽤是可见的。

⽆法看到表和数据库对象名称,不能嵌⼊SQL 语句,有助于避免 SQL 注⼊攻击。

存储过程的弊端:
1.架构不清晰,不够⾯向对象
存储过程不太适合⾯向对象的设计,⽆法采⽤⾯向对象的⽅式将业务逻辑进⾏封装,业务逻辑在存储层实现,增加了业务和存储的耦合,代码的可读性也会降低,
2.开发和维护要求⽐较⾼
存储过程的编写直接依赖于开发⼈员,如果业务逻辑改动较多,需要频繁直接操作数据库,⼤量业务降维到数据库,很多异常不能在代码中捕获,出现问题较难排查,需要数据库管理⼈员的帮助。

3.可移植性差
过多的使⽤存储过程会降低系统的移植性。

在对存储进⾏相关扩展时,可能会增加⼀些额外的⼯作。

存储过程与SQL语句如何抉择
架构设计没有绝对,只有在当前的场景下最合适的。

普通的项⽬开发中,不建议⼤量使⽤存储过程,对⽐SQL语句,存储过程适⽤于业务逻辑复杂,⽐较耗时,同时请求量较少的操作,例如后台⼤批量查询、定期更新等。

(1)当⼀个事务涉及到多个SQL语句时或者涉及到对多个表的操作时可以考虑应⽤存储过程
(2)在⼀个事务的完成需要很复杂的商业逻辑时可以考虑应⽤存储过程
(3)⽐较复杂的统计和汇总可以考虑应⽤后台存储过程
存储过程与sql语句的区别:
1、编写
存储过程:编写⽐较难;
sql语句:相对简单;
2、性能
存储过程:⾼,可移植性⾼,复⽤性⾼;
sql语句:低,可移植性差,不可复⽤;
3、安全
存储过程:⽐sql语句相对来说安全;
sql语句:参数化⽐较安全;
4、⽹络传输
存储过程:数据量⼩,减少⽹络数据传输量,只需存储过程名即可;sql语句:数据类量⼤,占⽤带宽⼤;
5、速度
存储过程:速度快,已经编译过了;
sql语句:预编译,执⾏⼀⾏编译⼀⾏;。

相关文档
最新文档