PostgreSQL的视图以及物化视图的特点

1.视图

PostgreSQL视图其实和mysql视图是一样的,视图其实是个虚拟的表,实际上是一个SQL拼接而成的虚拟表(假表),可能是有一个表或者多个表、视图关联而成的复杂的SQL,而这个SQL一般都是select语句(当然也可能是 update、delete 等的语句,但是可能会有诸多限制,而且用视图进行这些操作也不安全,一般也不会这么用。)。而视图的用途常常用于展示一些用户需要的信息,隐藏一些敏感或者是不重要的数据,汇总一些关键数据展示给用户。

操作:可以像表一样查询视图的字段,也可以当做一个表进行关联查询。
查询底层实现:通过创建视图的语句进行查询,每次会实时查询底表,所以数据是实时的。
索引:走表的索引。

2.物化视图

基本功能和视图类似。对标实体表和普通视图,会将数据真实的存储在服务器中,会比普通视图更像一个表。上面说到的视图是一个虚拟的表,这个物化视图其实是一个物理表,它可以用自己的索引。

操作:可以像表一样查询视图的字段,也可以当做一个表进行关联查询。可以创建索引。
查询底层实现:创建后就真的被当做是表了,即结果都物化(固化)成了一个表,假如创建语句的底层表数据有变化,也不会影响到这个物化视图的数据,除非手动进行刷新。所以每次查询的都是固化的数据,不是实时的数据。
索引:走自己的索引,可以创建索引。

物化视图增量更新与全量更新

全量更新: 直接去基础表里面查询数据,刷新过程中会对该物化视图的所有的select操作阻塞,但刷新效率快。
增量刷新: 刷新要具备有唯一字段索引,将基础表查询出来的数据和现在物化视图表进行对比,填充差量数据,但刷新过程中不会对该物化视图的select操作进行阻塞,但刷新比全量更新慢。

你可能感兴趣的:(postgresql,数据库,sql)