2016-11-23 88 views
0

我不知道Oracle执行体系结构是否可行,所以我只是想问一下。
我有一个表,存储一些模式名称(例如。sch1,sch2,sch3),我使用此表在游标中动态创建联合所有查询。例如
。我的查询看起来像这样:Oracle转换选择Union All并行选择

select col1, col2 from sch1.tab1 
union all 
select col1, col2 from sch2.tab1 
union all 
select col1, col2 from sch3.tab1 

例如。如果我选择一个平行提示如

select /*+ parallel(tab,4)*/ * from tab 

如果我没有弄错,它会打开4个会话,并在一次执行中处理它。
所以有可能在这个方法中查询所有表?

+0

如果将“+”作为提示对待,它必须是注释中的第一个字符。做'/ * + parallel(tab,4)* /' –

回答

0

以下是一些documentation如何并行执行工作。会有一个会话。你可以宁愿像4个线程一样思考它。与其他语言中的并行编程完全相同,最大的收益是可以独立执行一些操作块。所以如果你的查询需要一些计算,或者可以读/写单独的表空间等,你会看到一些收益。但是如果你的查询只是从物理磁盘上的相同位置读取的,那么并行操作并不会带来大的收益,因为IO是瓶颈。