我正在学习Oracle视图,我得到了视图的概念,但对性能却很少感到困惑。
我正在观看视频,在那里我听到oracle视图可以提高性能。假设我创建了如下视图。
CREATE VIEW SALES_MAN
AS
SELECT * FROM EMP WHERE JOB='SALESMAN';
好了,我已经执行了查询以获取SALES_MAN详细信息。
SELECT * FROM SALES_MAN
好了,现在混乱开始了。
我在视频中听到,一旦执行上述查询SELECT * FROM SALES_MAN
,在点击oracle DB后,DATA / RECORD将被放入缓存中。如果我将执行相同的查询(IN当前会话/登录),Oracle引擎将不会命中数据库,并将从CACHED-MEMORY给你记录是不是?
但我在很多网站上都读过查看对SQL性能不添加任何内容 more
另一篇参考文献称视图对性能没有帮助。 Here
所以视图也提高了性能?
答案 0 :(得分:0)
视图只是查询定义的一种虚拟表。它没有适当的数据,性能将取决于基础表和查询定义。
但您还有物化视图,它存储了视图查询定义的结果。数据自动同步,您可以向视图添加索引。在这种情况下,您可以获得更好的表现。支付的费用是
答案 1 :(得分:0)
你(也许是未引用视频的创作者)会混淆两个不同的概念。第二次执行时使用缓存中的数据的原因不是因为它是视图的第二次执行。只要数据保留在缓存中,它就可用于需要它的任何查询。第一次执行视图必须从磁盘获取数据这一事实应该是一个强有力的线索。如果你的第二次使用视图不是几小时或几天后数据不再在缓存中呢?答案仍然存在。视图不会提高性能。