Oracle View与Oracle中的表连接

时间:2016-03-30 16:18:10

标签: oracle views

我理解视图是Oracle中基础表或表集的窗口。例如,如果我有一个通过连接多个表创建的视图,当我从视图中选择数据时,视图是否会执行实际的连接操作?视图是否比连接多个表以获取数据更好,还是在性能方面相同?

1 个答案:

答案 0 :(得分:1)

单个查询与使用视图的逻辑等效查询之间通常没有性能差异。

Oracle有优化器转换,可以将视图与外部查询组合在一起;谓词推送,简单和复杂的视图合并等。将视图看作更像是构建大型查询的文本宏,而不是返回行的函数。

例如,在下面的查询中,Oracle可能足够聪明,可以将主键列上的谓词推送到视图中。尽管视图本身可能会返回数百万行,但在运行整个查询时,Oracle将首先在主键列上应用谓词。

select *
from view_returns_millions_of_rows
where primary_key_value = 1;