物化视图性能

Kev*_*ith 1 postgresql materialized-view

Postgres 的文档说明:

虽然访问存储在物化视图中的数据通常比直接或通过视图访问底层表快得多,但数据并不总是最新的;

https://www.postgresql.org/docs/9.6/rules-materializedviews.html

为什么它“通常要快得多”?

Erw*_*ter 6

MV 的数据存储在常规表中,这没有什么神奇之处。但由于多种可能的原因,访问速度通常(快得多):

  • 多个表已经加入
  • 较小的行大小,只有常见查询的相关列
  • 预先计算的值
  • 预先选择的行,可能以昂贵的方式
  • 可能更少膨胀(更少的死元组)
  • 与基础表相比,上述多个项目可能导致表大小小得多
  • 行物理排序有利(集群),以便查询只需读取几个数据页
  • 索引的大小可以相应地小得多
  • 某些类型的索引只能以这种方式成为可能,例如来自多个基础表的列上的多列索引

简而言之:对底层表进行复杂查询的最昂贵的工作已经完成,这可能允许更快的访问。