我正在迁移Oracle对象到Snowflake。我在Oracle物化视图,从多个表中获取数据,但在雪花物化视图只能在单表上创建。我可以使用Oracle物化视图脚本,并使用它作为一个简单的视图加载到一个临时表,然后使用这个临时表来创建一个物化视图在它的顶部?
我使用Oracle物化视图脚本,可以使用它作为一个简单的视图加载到一个临时表,然后使用这个临时表创建物化视图的顶部吗?
不行,这不行。雪花中的物化视图不能基于另一个视图。但是不要绝望,仅仅因为在Oracle中需要物化视图并不意味着在Snowflake中也需要!相反,在传统RDBMS中需要物化视图的典型场景中,由于性能优越,在Snowflake中不需要特殊处理。当决定使用物化视图或常规视图时,Snowflake建议考虑以下事项:
-
当下列所有条件为true时创建物化视图:
-
来自视图的查询结果不会经常改变。这几乎总是意味着视图的底层/基表不会经常更改,或者至少在物化视图中使用的基表行子集不会经常更改。
-
视图的结果经常被使用(通常比查询结果的变化要频繁得多)。
-
查询占用大量资源。通常,这意味着查询会消耗大量处理时间或积分,但也可能意味着查询会为中间结果消耗大量存储空间。
-
-
当下列任意项为真时创建常规视图:
-
查看的结果经常变化
-
结果不常被使用(相对于结果变化的速率)。
-
查询不是资源密集型的,所以重新运行它不需要花费太多。
-