物化视图有哪些类型?
物化视图创建语句中的SELECT子句表示物化视图要包含的数据。一些限制条件限制了可以定义的内容,并且可以将多个表连接在一起。SELECT子句中可以包含多个元素,包括视图、内联视图(SELECT语句FROM子句中的子查询)、子查询和物化视图,这些元素都可以连接或插入。
物化视图的各种类型如下:
包含聚合的物化视图 − 在数据仓库中,物化视图通常包含聚合。为了能够快速更新,SELECT列表必须包含所有GROUP BY列(如果存在),并且应该对某些聚合列进行COUNT(*)和COUNT(column)操作。
查询中引用的所有表上都应该存在物化视图日志。真正的聚合函数是SUM、COUNT(x)、COUNT(*)、AVG、VARIANCE、STDDEV、MIN和MAX,并且要聚合的解释可以是一些SQL值表达式。
仅包含连接的物化视图 − 一些物化视图仅包含连接而不包含聚合,其中生成的物化视图将销售表连接到时间表和客户表。创建这种类型的物化视图的好处是将预先计算昂贵的连接。
对仅包含连接的物化视图的快速更新适用于对基表进行任何类型的DML操作之后(直接路径或常规的INSERT、UPDATE或DELETE)。仅包含连接的物化视图可以表示为ON COMMIT或ON DEMAND刷新。如果是ON COMMIT,则在对物化视图的分析表执行DML操作的事务提交时实现刷新。
如果物化视图只包含连接,则每个表的ROWID列(以及FROM列表中多次出现的表的每个实例)都应该出现在物化视图的SELECT列表中。
如果物化视图的FROM子句中包含远程表,则FROM子句中的所有表都应放在同一站点上。此外,对于包含远程表的物化视图,不提供ON COMMIT刷新。物化视图的每个详细表都应该在远程站点上存在物化视图日志,并且ROWID列应该出现在物化视图的SELECT列表中。
嵌套物化视图 − 嵌套物化视图是一个物化视图,其描述位于另一个物化视图上。嵌套物化视图可以引用数据库中的不同关系,包括引用物化视图。
在数据仓库中,它通常可以在单个连接上创建一些聚合视图(例如,沿多个维度的汇总)。增量支持这些不同的物化聚合视图可能需要很长时间,因为必须多次实现基本连接。