mysql - View 和零参数过程有什么区别?

标签 mysql stored-procedures view

在 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/

相关文章:

oracle - 使用 JDBC 从存储过程中获取 Oracle 表类型

mysql - 优化其他连接的 select 语句内的 union join

PostgreSQL - 整数的无效输入语法

php - jquery日历从mysql数据库中拉取信息

mysql - 数据库/服务器设置传输期间波兰字符集出现编码错误

php - PHP 中的通用数据库连接

sql - SQL Server 存储过程中的错误处理

java - 动态添加 View 到LinearLayout

android - 为什么 onPreDraw() 被调用两次?

mysql - 我的sql查询有两个表