是否在文件系统上创建并存储了MySQL View,或者它们是在运行时创建的

时间:2013-12-26 16:25:29

标签: mysql sql database views materialized-views

是否MySQL VIEW创建并存储了文件系统上的数据,因此当我们查询查看时,它将来自VIEW表,而不是对实际表进行查询。

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

如果MySQL不支持VIEW数据caching,是否还有其他支持此功能的数据库?

2 个答案:

答案 0 :(得分:4)

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

你所说的是“物化观点”。

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

答案 1 :(得分: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

Oracle至少发布了9i,因此支持物化视图。

请参阅Materialized View Concepts and Architecture

Microsoft SQL Server

自2005年以来,Microsoft已经索引视图。虽然这些视图与物化视图不完全相同,但它们可能与您想要的相似。

请参阅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

Sybase SQL Anywhere 12支持物化视图。

  

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

请参阅Working with materialized views

的Informix

Informix不支持物化视图,因为大多数人都会想到这个术语。 Informix使用术语“物化视图”与大多数人不同:

  

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

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

的Teradata

至少自2002年以来,Teradata已实施了物化视图。

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