表,视图,存储过程,函数之间的区别

原文地址:https://www.cnblogs.com/zwc1112/articles/8108758.html

表 是真实存在的,它占内存空间
视图 是虚拟表,不存储数据,存储的是sql,检索他的时候实际上是执行定义它的sql语句,不占任何内存
存储过程 理解的简单一点就是“数据库中的程序”,可以在不需要外部程序(如C,java,vb等)的情况下,让数据库自己解决复杂的、用一般sql不能实现
的功能,而视图则不然
表和视图的区别
视图不占实际空间,可以对任意的表进行叠加和剪裁,利用分区视图的功能,能加快表的I/O读取时间(需要2块以上硬盘)

视图和存储过程的区别
视图只不过是存储在sqlserver上的select语句罢了,当对视图请求时,sqlserver会像执行一句普通的select语句那样的执行视图的select语句,它的性能并 不像人们想象得那么出色。 
而存储过程在编译后可以生成执行计划,这使得每次执行存储过程的时候效率将会更高,这是存储过程,另外台提交参数的时候,使用存储过程将会减少网络带宽流量,这是存储过程相对于普通的sql语句在性能上的最大的优势

存储过程和函数的区别
函数:只能返回一个变量的限制。而存储过程可以返回多个。
函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行 
执行的本质都一样。 
函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少
1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句 中位于FROM关键字的后面。
4. 当存储过程和函数被执行的时候,SQL Manager会到PRocedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译


你可能感兴趣的:(GP)