视图和零参数过程之间有什么区别?

时间:2018-02-09 15:56:17

标签: mysql stored-procedures views

在mySQL中,我经常在创建视图和创建没有任何参数的存储过程之间犹豫不决。

除了过程可以返回多个输出表之外,视图和零参数过程之间有什么概念上的区别?

假设我们想要获取的输出只包含一个表,那么在使用视图和使用没有参数的存储过程之间是否存在性能差异,是否存在可以执行的操作而另一个不能执行的操作?

1 个答案:

答案 0 :(得分:1)

有许多不同之处。它们用于不同的事情。这里有一些例子,但这绝不是一个完整的清单。

  • 您可以在SELECT查询中使用视图,在其结果上应用SQL条件和投影。您甚至可以将视图加入其他表,就像表一样。

  • 您可以使用视图 - 如果它是可更新的视图 - 作为INSERT,UPDATE,DELETE等其他SQL语句的主题。

  • 您无法将视图定义为SELECT查询以外的任何内容。您可以在过程中添加各种不同的语句类型。

  • 您可以在存储过程中编写代码块来执行大量条件逻辑,执行插入和查询等操作。

  • 您可以在存储过程中使用PREPARE和EXECUTE在运行时构建动态SQL语句。因此,您可以执行需要运行时解析的操作,例如数据透视表查询。

  • 您可以在存储过程中使用DDL。

  • 您可以在一个过程中启动和提交一个或多个事务。

  • 第一次在会话中使用过程时会编译一个过程,每个会话都必须重新编译它。而视图在创建时会被“编译”一次。

  • 过程可以读取或设置会话变量,但视图不能。