【问题标题】:Is MySQL View created and stored on file system or they are created always on flyMySQL View 是在文件系统上创建和存储的,还是总是动态创建的
【发布时间】:2014-01-14 06:57:32
【问题描述】:

MySQL VIEW 是在文件系统上创建和存储数据的,所以当我们查询视图时,它将来自 VIEW 表,而不是对实际表进行查询。

或者它只保存VIEW 的定义,并且在我们对视图进行查询时总是从实际表中获取。

如果MySQL 不支持VIEW 数据caching 是否有任何其他数据库支持这个?

【问题讨论】:

    标签: mysql sql database views materialized-views


    【解决方案1】:

    通常,视图定义存储在数据库中,并作为查询(而不是结果)代入查询。这是所有数据库的标准。

    您所说的是“物化视图”。

    MySQL 不支持物化视图。 SQL Server 和 Oracle 确实支持它们。其他数据库也可以。

    【讨论】:

    【解决方案2】:

    MySQL

    不,MySQL 不存储视图的数据。

    您可以使用名为 FlexViews 的开源工具获得类似物化视图的东西,该工具会扫描二进制日志以对保存物化视图的表进行增量更新。

    https://github.com/greenlion/swanhart-tools

    PostgreSQL

    PostgreSQL 9.3 支持物化视图作为一项新功能,尽管刷新视图不是增量或自动的。

    https://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.3#Materialized_Views

    其他

    我不知道任何其他支持物化视图的开源 RDBMS。


    以下是非开源数据库:

    甲骨文

    Oracle 至少从 9i 版开始就支持物化视图。

    Materialized View Concepts and Architecture

    微软 SQL 服务器

    Microsoft 自 2005 年以来索引视图。虽然这些与物化视图并不完全相同,但它们可能足够相似,可以满足您的需求。

    http://aboutsqlserver.com/2011/03/24/indexed-materialized-views-in-microsoft-sql-server/

    IBM DB2

    在 DB2 中,物化查询表 (MQT) 是一个基于查询结果定义的表。因此,MQT 通常包含基于其定义所基于的一个或多个表中存在的数据的预计算结果。如果查询编译器确定查询将针对 MQT 比基表或表更有效地运行,则查询将针对 MQT 执行,并且您获得结果的速度比其他方式更快。此概念与 Oracle 中的物化视图概念相同。

    Comparing DB2 materialized query tables and Oracle materialized views

    赛博

    Sybase SQL Anywhere 12 支持物化视图。

    物化视图是其结果集已计算并存储在磁盘上的视图,类似于基表。从概念上讲,物化视图既是视图(它在目录中存储了查询规范)又是表(它具有持久的物化行)。因此,您对表执行的许多操作也可以在物化视图上执行。例如,您可以在物化视图上构建索引并从中卸载。

    Working with materialized views

    Informix

    Informix 不支持物化视图,正如大多数人所认为的那样。 Informix 使用术语“物化视图”的方式与大多数人不同:

    但是,当视图定义的复杂性导致创建临时表来处理查询时,针对视图的查询可能会比预期的执行速度更慢。这个临时表被称为物化视图。例如,您可以创建一个带有联合的视图来组合来自多个 SELECT 语句的结果。

    请参阅 Informix 11.50 性能指南中的 View Costs

    Teradata

    Teradata 至少从 2002 年开始实施物化视图。

    请参阅Introduction to Materialized Views in Teradata (PDF)。

    【讨论】:

      猜你喜欢
      • 2011-07-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      相关资源
      最近更新 更多