是否MySQL VIEW
创建并存储了文件系统上的数据,因此当我们查询查看时,它将来自VIEW表,而不是对实际表进行查询。
或者只保留VIEW
的定义,并且在我们对视图进行查询时总是从实际表中获取。
如果MySQL
不支持VIEW
数据caching
,是否还有其他支持此功能的数据库?
答案 0 :(得分:4)
通常,视图定义存储在数据库中,并作为查询(而不是结果)替换为查询。这是所有数据库的标准。
你所说的是“物化观点”。
MySQL不支持物化视图。 SQL Server和Oracle确实支持它们。其他数据库也可以。
答案 1 :(得分:2)
不,MySQL不存储视图的数据。
您可以使用名为 FlexViews 的开源工具获取物化视图之类的内容,该工具扫描二进制日志以对包含物化视图的表进行增量更新。
请参阅https://github.com/greenlion/swanhart-tools
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。
自2005年以来,Microsoft已经索引视图。虽然这些视图与物化视图不完全相同,但它们可能与您想要的相似。
请参阅http://aboutsqlserver.com/2011/03/24/indexed-materialized-views-in-microsoft-sql-server/
在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使用术语“物化视图”与大多数人不同:
但是,当视图定义的复杂性导致创建临时表以处理查询时,对视图的查询执行速度可能比预期慢。此临时表称为物化视图。例如,您可以使用union创建一个视图,以组合来自多个SELECT语句的结果。
请参阅Informix 11.50性能指南中的View Costs。
至少自2002年以来,Teradata已实施了物化视图。