我正在创建一个网络应用程序,它具有一些复杂的底层关联。为了解决几个问题,我创建了一个 UNION 视图。可能还有很多其他方法可以解决这个问题。
但我现在正在考虑我的设计效率,我想知道一个VIEW是每次查询时都是新创建的,还是只创建一次,并不断更新。
详细地说,如果我有 table_a(100 条记录)和 table_b(100 条记录)并创建一个 UNION 视图,那么我创建了一个包含 200 条记录的视图。
每次我对视图进行选择时,整个过程都会发生吗?
同样,显然每次我更新基础表记录时,视图都会更新,但是视图是更新这一记录还是从头开始重新创建整个视图?
Dale
视图只不过是带有名称的查询。可能存在与性能相关的优化,一些 DBMS 比其他 DBMS 实现得更好(pgSQL 似乎更好),例如重用查询计划、缓存访问控制等。
然而,在一天结束时,几乎总是,您可以期望视图的行为类似于直接发出 SQL。不同之处在于,您可以授予对此查询的访问权限,而无需授予对基础表的访问权限。
您可以进行一些优化来改变行为(使它们像半表一样),并且这些优化可能会或可能不会存在于 pgSQL 中,如物化视图(抱歉,不知道 pgSQL),但这只是吹毛求疵。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)