从SQL和VIEW选择之间的Oracle区别

问题描述 投票:-1回答:1

我有下面的SQL将在Oracle 11g上运行。

想知道直接执行SQL还是通过视图执行SQL有任何区别,并且有任何性能差异

select a.*, b.*, c.* 
  from TABLE_A a
  join TABLE_B b on b.id = a.id
  join TABLE_C c on c.taskid = b.taskid
 where (b.taskid  in (1,2,3)) 
    or (b.taskid  in (4,5) and a.creation_date > (sysdate-10) );
sql oracle performance view
1个回答
0
投票

是的,它可能非常罕见,因为View是对实际表的临时描述,因此,就像减少与实际整个表不同的是,通过视图选择的列数不一样。

通常,通过在视图中进行选择,通常性能可能会稍微好一些,这意味着当您只需要很少的列(您明确知道总是需要)时,您可以引用视图,因为视图已经具有最小化的表结构,而不是从表中选择几列本身。

假设在下面的查询本身中,如果我仅获得table_b的几列,那么如果我已经创建了具有表b的几列的视图。对于海量数据,整个表的连接与视图的几个必需列的连接会有所不同]

     SELECT * from TABLE_A a, TABLE_B 
       b, TABLE_C c
    WHERE a.id=b.id
   and b.taskid=c.taskid
  and ((b.TASKID  in (1,2,3)) or (b.TASKID  
   in (4,5) and a.CREATION_DATE > ( 
     sysdate-10) ));
© www.soinside.com 2019 - 2024. All rights reserved.