码迷,mamicode.com
首页 > 数据库 > 详细

关于数据库存储过程和函数的区别,优缺点以及各家之言

时间:2018-05-24 23:00:52      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:一段   不用   重要   通过   from   责任   bsp   SQ   瓶颈   

摘抄观点:

  1. 存储过程(Stored Procedure):一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
  2. 存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
  3. 数据库专心做好数据存取就够了,业务都交给程序去实现!别把业务层的东西整到数据库里去。互联网基本不会用存储过程
  4. 因为数据库开发和优化的复杂性,DBA根本就不相信写业务逻辑的人能写出好的SQL(同时不相信ORM),业务逻辑的开发者也不想研究schema后面的水有多深,所以存储过程很好的解决了责任分工的问题。
  5. 存储过程开发快,升级方便,不用替换业务版本,跑下数据升级脚本就行。参加过一个大项目业务,业务逻辑大部分是oracle pl/sql存储过程实现。后来性能遇到瓶颈,热点查询app代码重写了一遍。
  6. 存储过程一旦调试完成通过后就能稳定运行,这与各个业务在一段时间内是相对稳定和确定是匹配的;存储过程大大地减少了业务系统与数据库的交互,一定程度降低了业务系统与数据库的耦合,例如即使业务系统与应用系统不在同一城市,对性能的影响也可控(100条SQL语句交互一次,即使延时由同城1ms增加到异地50ms,也只是增加49ms,如果交互100次,则增加4900ms)。在互联网行业,存储过程很少使用,一个重要的原因是MySQL的广泛使用,而MySQL的存储过程的功能很弱(跟商业数据库相比);另外也跟互联网行业变化快有一定的关系。

引用出处:

Mysql 存储过程和函数区别 http://www.cnblogs.com/youxin/p/3568379.html

MySQL存储过程_创建-调用-参数 http://www.cnblogs.com/geaozhang/p/6797357.html

存储过程在实际项目中用的多吗?https://www.zhihu.com/question/54408187

关于数据库存储过程和函数的区别,优缺点以及各家之言

标签:一段   不用   重要   通过   from   责任   bsp   SQ   瓶颈   

原文地址:https://www.cnblogs.com/yanghuahui/p/9085461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!