sql - MySql View 是否动态且高效?

标签 sql mysql

我希望创建一个表格 View ,该 View 将突出显示符合特定条件的数据。例如,如果我有一个包含整数值的表,我希望我的 View 显示值大于 100 的行。我知道如何通过在表上创建 View 来实现这一点,但是 View 是动态的吗?我已经在 MySQL 中对此进行了测试,这似乎是真的。但是,如果我的表有超过 1000 行,这是否有效? View 是否仍会“动态”更新原始表中的任何更改?

最佳答案

基本上基本有2个types of views在 MySQL 中。

  1. 合并 View

    这种类型的 View 基本上只是用 View 的 SQL 重写您的查询。所以这是自己编写查询的简写。这并没有带来真正的性能优势,但可以更轻松地编写复杂的查询并更轻松地进行维护(因为如果 View 定义发生更改,您无需针对 View 更改 100 个查询,只需更改一个定义)。

    <
  2. 临时 View

    这种类型的 View 使用来自 View 的 SQL 的查询创建一个临时表。它具有合并 View 的所有优点,但也减少了 View 表的锁定时间。因此,在高负载服务器上,它可能会获得相当显着的性能提升。

还有“未定义” View 类型(默认),让 MySQL 在查询时选择它认为最好的类型...

但请注意,MySQL 不支持 materialized views。 .所以它不像 Oracle,复杂的 View 会显着提高查询的性能。 View 的查询总是在 MySQL 中执行。

就效率而言,MySQL 中的 View 不会提高或降低效率。在编写和维护查询时,它们可以让您的生活更轻松。我已经在具有数亿行的表上使用了 View ,并且它们工作得很好......

关于sql - MySql View 是否动态且高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4886874/

相关文章:

php - 优化MySqli请求

sql - bool 给出无效数据类型 - Oracle

sql - 自定义 SQL Order By 语句

MySQL独特的Group By豁免案例

mysql - 如何避免连接中同一行的两个结果

mysql - 单个查询的准备语句慢了多少?

使用unixtime进行MySQL查询

mysql - MySQL 中何时使用单引号、双引号和反引号

php - 使用模型工厂的 MySQL 锁定等待超时

php - MySQL 所选行的大小