分析表,重新估算統計資訊
analyze table tasharecurrents estimate statistics;
開啟或關閉表的並行選項
alter table tasharecurrents parallel;
--alter table tasharecurrents noparallel;
啟用oracle hint,強制執行計畫,分別記錄有並行和無並行的執行時間
select --/*+ parallel(t)*/
b.fundname **名稱,
sum(nvl(t.lastshares, 0)) 份額,
sum(decode(m.individualorinstitution, '1', 0, t.lastshares)) 機構投資者,
sum(decode(m.individualorinstitution, '1', t.lastshares, 0)) 個人投資者,
count(distinct(decode(m.individualorinstitution, '1', null, t.taaccountid))) 機構投資者數量, -- null的個數不計入count
count(distinct(decode(m.individualorinstitution, '1', t.taaccountid, null))) 個人投資者數量
from tasharecurrents t,
tafundtype b,
taaccoinfo m
where 1 = 1
and t.fundcode = b.fundcode
and t.taaccountid = m.taaccountid
and t.transcfmdate <= to_date('20070430', 'yyyymmdd')
and t.sharevaliddate > to_date('20070430', 'yyyymmdd')
and t.lastshares > 0
group by b.fundname
;執行計畫為
select statement, goal = choose cost=22780 cardinality=13 bytes=832
sort group by cost=22780 cardinality=13 bytes=832
sort group by cost=22780 cardinality=13 bytes=832
sort group by cost=22780 cardinality=13 bytes=832
hash join cost=17001 cardinality=6908778 bytes=442161792
table access full object owner=ta object name=tafundtype cost=2 cardinality=13 bytes=195
hash join cost=16999 cardinality=6908778 bytes=338530122
table access full object owner=ta object name=taaccoinfo cost=2114 cardinality=2590572 bytes=33677436
table access full object owner=ta object name=tasharecurrents cost=14885 cardinality=6908778 bytes=248716008
最後,比較發現並行對該查詢沒有效果,有無並行的執行時間基本相同。初步估計可能跟tasharecurrents的儲存結構有關係。tasharecurrents有500萬行,記錄平均長度約150byte,taaccoinfo約200萬行記錄,記錄平均長度約150byte。兩個表沒有分割槽。
其它相關sqlplus命令:
show parameter opt
alter system set optimizer_mode = all_rows scope = spfile;
Oracle 並行查詢
並行查詢允許將乙個sql select語句劃分為多個較小的查詢,每個部分的查詢併發地執行,然後會將各個部分的結果組合起來,提供最終的答案。我們來看乙個例子 1.執行如下一串sql語句,建立乙個叫big table的表,期間會讓你錄入1的值 想要往big table表裡面插入多少行資料 我錄入的是10...
Oracle 並行查詢
所謂並行執行,是指能夠將乙個大型序列任務 任何dml,一般的ddl 物理的劃分為叫多個小的部分,這些較小的部分可以同時得到處理。何時使用並行執行 1 必須有乙個非常大的任務 2 必須有充足的資源 cpu,i o,memory alter table test a parallel 告訴oracel,...
用Oracle並行查詢發揮多CPU的威力
在乙個單獨的伺服器中安裝更多的cpu成為目前的乙個趨勢。使用對稱多處理伺服器 smp 的情況下,乙個oracle伺服器擁有8個 16個或32個cpu以及幾吉位元ram的sga都不足為奇。oracle跟上了硬體發展的步伐,提供了很多面向多cpu的功能。從oracle8i開始,oracle在每個資料庫函...