【问题标题】:Materialized View on Snowflake雪花的物化视图
【发布时间】:2023-03-26 17:30:01
【问题描述】:

我正在将 Oracle 对象迁移到 Snowflake。我在 Oracle 中有从多个表中获取数据的物化视图,但在 Snowflake 中,只能在单个表上创建物化视图。我可以使用 Oracle 物化视图脚本并将其作为简单视图加载到临时表中,然后使用此临时表在其上创建物化视图吗?

【问题讨论】:

  • 首先,检查普通视图的性能,没有具体化。 Snowflake 的性能远远优于 Oracle,您可能不再需要具体化该数据。请记住,后续查询将使用结果缓存。

标签: view snowflake-cloud-data-platform temp-tables materialized-views


【解决方案1】:

我是否可以使用 Oracle 物化视图脚本并将其用作简单视图来加载到临时表中,然后使用此临时表在其之上创建物化视图?

不,这行不通。 Snowflake 中的物化视图不能基于另一个视图。但是不要绝望,仅仅因为您在 Oracle 中需要一个物化视图并不意味着您在 Snowflake 中也需要一个!相反,在传统RDBMS中需要物化视图的场景中很典型,而Snowflake由于其卓越的性能而无需特殊处理。在决定使用物化视图或常规视图时,Snowflake 建议考虑以下注意事项:

  • 当满足以下所有条件时创建物化视图:

    • 视图的查询结果不会经常变化。这几乎总是意味着视图的底层/基表不会经常更改,或者至少物化视图中使用的基表行的子集不会经常更改。

    • 经常使用视图的结果(通常比查询结果更改的频率要高得多)。

    • 查询消耗大量资源。通常,这意味着查询会消耗大量处理时间或积分,但也可能意味着查询会占用大量存储空间来存储中间结果。

  • 当满足以下任一条件时创建常规视图:

    • 视图的结果经常变化。

    • 结果不经常使用(相对于结果变化的速度)。

    • 查询不是资源密集型的,因此重新运行它并不昂贵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多