Sql 物化视图-我们为什么需要它?

Sql 物化视图-我们为什么需要它?,sql,postgresql,Sql,Postgresql,我读了这篇文章。。。 作者说: 物化视图是保存到表中的查询的快照 如果是这样,为什么我们需要物化视图? 它与从查询插入到表有什么区别: insert into items_ver(item_id, item_group, name) select * from items where item_id=2; 物化视图与常规视图: 常规视图是可供使用的存储查询。但是,每次查询视图时都会运行它。这可以使复杂查询变得更简单,但每次运行视图查询时,都会受到性能的影响 物化视图不仅为您预先运行查询结果

我读了这篇文章。。。

作者说:

物化视图是保存到表中的查询的快照

如果是这样,为什么我们需要物化视图? 它与从查询插入到表有什么区别:

insert into items_ver(item_id, item_group, name)
select * from items where item_id=2;

物化视图与常规视图:

  • 常规视图是可供使用的存储查询。但是,每次查询视图时都会运行它。这可以使复杂查询变得更简单,但每次运行视图查询时,都会受到性能的影响
  • 物化视图不仅为您预先运行查询结果。实际上,您可以为结果编制索引,以优化视图的子查询。通过这种方式,您可以获得物理表和视图的许多好处
  • 物化视图的缺点是,您需要主动指示它更新其内容,这就是为什么(正如评论员所指出的)它对于数据仓库和活动事务数据库最有效,因为您可能希望内容始终是最新的
物化视图与实际表:

  • 实际表可以由查询填充,但它不再绑定到填充它的查询。例如,您可以在其中插入查询不会返回的元素
  • 物化视图仍然绑定到创建它的查询。通过调用
    REFRESH MATERIALIZED VIEW{VIEW\u name}
    ,可以用查询的最新结果重新填充它

物化视图与常规视图:

  • 常规视图是可供使用的存储查询。但是,每次查询视图时都会运行它。这可以使复杂查询变得更简单,但每次运行视图查询时,都会受到性能的影响
  • 物化视图不仅为您预先运行查询结果。实际上,您可以为结果编制索引,以优化视图的子查询。通过这种方式,您可以获得物理表和视图的许多好处
  • 物化视图的缺点是,您需要主动指示它更新其内容,这就是为什么(正如评论员所指出的)它对于数据仓库和活动事务数据库最有效,因为您可能希望内容始终是最新的
物化视图与实际表:

  • 实际表可以由查询填充,但它不再绑定到填充它的查询。例如,您可以在其中插入查询不会返回的元素
  • 物化视图仍然绑定到创建它的查询。通过调用
    REFRESH MATERIALIZED VIEW{VIEW\u name}
    ,可以用查询的最新结果重新填充它

它们用于性能方面。其想法是,所讨论的查询速度太慢,无法按需运行,因此该查询的结果会定期保存到表中,以便更快地访问。物化视图通常用于数据仓库场景中,虽然没有什么不同,但它提供了更丰富、更好的界面。通过一个简单的插入,您可以自己完成删除/更新等所有细节。它们用于性能方面。其想法是,所讨论的查询速度太慢,无法按需运行,因此该查询的结果会定期保存到表中,以便更快地访问。物化视图通常用于数据仓库场景中,虽然没有什么不同,但它提供了更丰富、更好的界面。通过简单的插入,您可以自己完成删除/更新等所有细节。