我正在创建一个具有一些复杂的底层关联的网络应用程序.为了
解决我创建了一个UNION视图的几个问题.可能还有很多其他
方法可以
解决.
但是我现在正在考虑我的设计效率,而且我想知道一个VIEW是在每次被查询时新创建的,还是只创建一次,并保持更新.
要详细说明,如果我有table_a(100条记录)和table_b(100条记录)并创建一个UNION View,那么我创建了一个包含200条记录的视图.
每当我对视图进行选择时,这个整个过程是否发生?
再次,显然,每次更新基础表记录时,视图都会被更新,但视图是否更新了这个记录,还是从头开始重新创建整个视图?
戴尔
视图只不过是具有
名称的
查询.有可能与perf相关的优化,一些DBMS比其他实现更好(pg
sql似乎在更好的一面),如重用
查询计划,缓存访问控制等.
但是,在他们这一天的结尾,几乎总是,你可以期待一个视图的行为就像直接发出sql.有区别的是,您可以授予对此查询的访问权限,允许访问底层表.
有一些优化可以改变行为(使它们像桌子一样),而且可能或可能不存在于pgsql中,例如物化视图(对于pgsql来说,不好意思),但这只是愚蠢的.