我理解视图是Oracle中基础表或表集的窗口。例如,如果我有一个通过连接多个表创建的视图,当我从视图中选择数据时,视图是否会执行实际的连接操作?视图是否比连接多个表以获取数据更好,还是在性能方面相同?
答案 0 :(得分:1)
单个查询与使用视图的逻辑等效查询之间通常没有性能差异。
Oracle有优化器转换,可以将视图与外部查询组合在一起;谓词推送,简单和复杂的视图合并等。将视图看作更像是构建大型查询的文本宏,而不是返回行的函数。
例如,在下面的查询中,Oracle可能足够聪明,可以将主键列上的谓词推送到视图中。尽管视图本身可能会返回数百万行,但在运行整个查询时,Oracle将首先在主键列上应用谓词。
select *
from view_returns_millions_of_rows
where primary_key_value = 1;