在 mySQL 中,我经常在创建 View 和创建不带任何参数的存储过程之间犹豫不决。
除了过程可以返回多个输出表这一事实之外, View 和零参数过程之间还有哪些概念差异?
假设我们想要获得的输出仅由一个表组成,那么使用 View 和使用不带参数的存储过程之间是否存在性能差异?是否存在一个可以做而另一个不能做的事情?
最佳答案
有很多差异。它们用于不同的事情。以下是我突然想到的一些示例,但这绝不是完整的列表。
您可以在 SELECT 查询中使用 View ,应用 SQL 条件并对其结果进行投影。您甚至可以将 View 连接到其他表,就像表一样。
您可以使用 View (如果它是可更新 View )作为其他 SQL 语句(例如 INSERT、UPDATE、DELETE)的主题。
您不能将 View 定义为 SELECT 查询以外的任何内容。而您可以在过程中放置各种不同的语句类型。
您可以在存储过程中编写代码块来执行大量条件逻辑、执行插入和查询等。
您可以在存储过程中使用 PREPARE 和 EXECUTE 在运行时构建动态 SQL 语句。因此,您可以执行需要运行时解析的操作,例如数据透视表查询。
您可以在存储过程中使用 DDL。
您可以在一个过程中启动并提交一个或多个事务。
程序在 session 中第一次使用时会被编译,并且每个 session 都必须重新编译它。而 View 在创建时就会“编译”一次。
过程可以读取或设置 session 变量,但 View 不能。
关于mysql - View 和零参数过程有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48709588/