我正在学习Oracle视图,我了解视图的概念,但对性能并不感到困惑。
我在看视频,在那里我听着甲骨文的观看可以提高性能。假设我创建了如下视图。
CREATE VIEW SALES_MAN
AS
SELECT * FROM EMP WHERE JOB='SALESMAN';好的,现在我已经执行了查询以获得SALES_MAN细节。
SELECT * FROM SALES_MAN好的,现在开始混乱。我在视频中听到,一旦执行上述查询SELECT * FROM SALES_MAN,数据/记录将在命中oracle后放入缓存内存中。如果我将执行相同的查询(在当前会话/登录中),Oracle引擎将不会命中数据库,并将从缓存内存中提供记录,对吗?
但我在许多网站上看到,视图没有为SQL性能 更多添加任何内容。
另一个引用说视图无助于性能。这里
那么视图是否也能提高性能呢?
发布于 2016-02-14 09:35:36
视图只是一种由查询定义的虚拟表。它没有适当的数据,性能将取决于底层表和查询定义。
但是您还可以让物化视图存储视图查询定义的结果。数据是自动同步的,您可以向视图添加索引。在这种情况下,您可以获得更好的性能。付出的代价是
发布于 2016-02-14 13:25:17
你(也许也是这段未被引用的视频的创作者)混淆了两个不同的概念。缓存中的数据在第二次执行时使用的原因并不是因为它是视图的第二次执行。只要数据仍然保存在缓存中,它就可以用于任何需要它的查询。视图的第一次执行必须从磁盘获取数据这一事实应该是一个强有力的线索。如果您对视图的第二次使用直到几个小时或几天后数据不再在缓存中时才使用呢?答案依然存在。视图不会提高性能。
https://stackoverflow.com/questions/35390169
复制相似问题