Query-Performance
Oracle中子查詢和外查詢使用並行度“/+parallel(4)/”在性能上的區別
我有以下查詢:
select /*+parallel(4)*/ ---> First Location <Desc_1> Amount, <Desc_2> Amount, <Desc_3> Amount from (select /*+parallel(4)*/ ---> Second Location <Column_1>, <Column_2> from <Example_Table> where <Conditions> ) pivot(sum(Column_1) Amount for <Column_2> in (1 as <Desc_1>, 2 as <Desc_2>, 3 as <Desc_3>) );
關鍵是
<Example_Table>
那張桌子很大,我想問在哪裡最好使用/*+parallel(4)*/
?SubQuery
在外部選擇或外部選擇中使用它更好嗎?如果我們/*+parallel(4)*/
在外部和內部選擇中都使用怎麼辦?對性能不利嗎?
好吧,如果您只有一個表,並且您的外部選擇沒有訪問其他表,我猜想“第二個位置”將是優化器查看的唯一一個。在實踐中,易於測試:只需對這兩個選項做一個解釋計劃,然後看看。然後以兩種方式呼叫它,並驗證會發生什麼。
Oracle 非常聰明地為並行查詢做正確的事情。如果兩個選項都沒有生成並行執行計劃,請查看以下參數:
select name, value from v$parameter where name like 'parallel%' order by 1;
並查看有關“初始化參數”的Oracle 數據庫參考部分,例如
parallel_adaptive_multi_user
了解詳細資訊。所以如果你把它放在兩個地方都不會發生什麼可怕的事情,但一定要先在開發環境中測試。