sql - 物化 View ——我们为什么需要它?

标签 sql postgresql

<分区>

我看了这篇文章... http://hashrocket.com/blog/posts/materialized-view-strategies-using-postgresql

作者说:

A materialized view is a snapshot of a query saved into a table.

如果是这样,为什么我们需要物化 View ? 它与从查询插入表有何不同:

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

最佳答案

物化 View 与常规 View :

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

物化 View 与实际表:

  • 一个实际的表可以由查询填充,但它不再绑定(bind)到填充它的查询。例如,您可以向其中插入查询不会返回的元素。
  • 实体化 View 仍然绑定(bind)到创建它的查询。您可以通过调用 REFRESH MATERIALIZED VIEW {view_name} 用最新的查询结果重新填充它。

关于sql - 物化 View ——我们为什么需要它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33894294/

相关文章:

sql - 在 postgres 中拆分列值

php - Sql/php 中的多词搜索

sql - 错误 : PL/SQL: Compilation unit analysis terminated?

mysql - 获取匹配的列名

MySQL 到 PostgreSQL 的 to_tsvector、@@ 和 to_tsquery?

spring - 使用 postgresql 和 postgis 扩展的飞路迁移

sql - postgresql语法错误?

java - Java 中的 Hibernate 插入查询

SQL - 对有序数字系列的谓词

linux - 无法在 Centos 5 上使用 postgis 启动 postgres