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

摘抄观点:html

  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的存储过程的功能很弱(跟商业数据库相比);另外也跟互联网行业变化快有必定的关系。

引用出处:sql

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

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

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

相关文章
相关标签/搜索