我有一个包含许多相关表的模式.一个视图让我将所有这些表聚集在一个易于处理我的应用程序的大表中.
现在我需要为应用程序提供略微不同的视图:还有一个与present相关的关系,一些额外的列,
A very simplified example: the real one has many fields and tables related
Base request:
select T1.C1, T2.C2
from T1, T2
where ...
Specialized request A:
select T1.C1, T2.C2, T2.C3, T4.C4
from T1, T2, T4
where ...
Specialized request B:
select T1.C1, T2.C2, T2.C3, T5.C5
from T1, T2, T5
where ...
Run Code Online (Sandbox Code Playgroud)
您认为创建第一个视图'base_view'然后重用此视图来创建view_A和view_B是一个好主意(在维护和性能方面)吗?
假设您总是需要加入T1和T2然后是,基本视图将是一个好主意.当您需要添加其他视图时,它将降低维护成本.
基本视图的主要危险是基本视图确实可以使用专门的结果.例如,如果基本视图加入了专门请求不需要的第三个表,则专用请求的效率将低于其他情况.(请注意,这取决于Oracle版本和优化程序 - 在最新版本中,优化程序可能能够确定专用查询不需要加入第三个表,从而消除查询计划中的表).