溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微課sql優(yōu)化(4)、幫助“表姐”優(yōu)化報(bào)表

發(fā)布時(shí)間:2020-08-09 21:26:12 來(lái)源:ITPUB博客 閱讀:193 作者:orastar 欄目:關(guān)系型數(shù)據(jù)庫(kù)

1、"表姐"的報(bào)表SQL問題


今天"表姐"有個(gè)比較緊急的工作,有一張歷史費(fèi)用報(bào)表下班前必須查詢出來(lái),已經(jīng)倒騰2個(gè)小時(shí)了,查詢并發(fā)數(shù)已經(jīng)加到40個(gè),報(bào)表還是查詢不出來(lái),而且這個(gè)報(bào)表每月都會(huì)折磨表姐, 眼看就要下班了,時(shí)間緊近,緊急求助。
經(jīng)常被單位各位"表姐"騷擾,而且還特別緊急。。。。DBA的苦,好吧,放下手頭工作,先幫"表姐"處理問題。。。。

2、問題分析


DBA:  
你的SQL發(fā)我看看?
表姐
select  /*+ parallel(T 40)*/* FROM ht.ht_tab_fy T
WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%')
AND T.DATA_MONTH = '201709' ;
DBA
這個(gè)查詢結(jié)果發(fā)我看看?
explain plan for 
select * FROM ht.ht_tab_fy T
WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%')
AND T.DATA_MONTH = '201709' ;
select * from table(dbms_xplan.display());
表姐 : 
-------------------------------------------------------------------------------
| Id  | Operation            | Name              | Rows  | Bytes | Cost (%CPU)|
-------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |                   | 25466 |  3531K| 80186   (2)|
|   1 |  HASH JOIN RIGHT SEMI|                   | 25466 |  3531K| 80186   (2)|
|   2 |   TABLE ACCESS FULL  | ht_DEPT          |    58 |  2494 |     8   (0)|
|   3 |   TABLE ACCESS FULL  | ht_tab_fy |   118K|    11M| 80176   (2)|
-------------------------------------------------------------------------------
DBA
這兩個(gè)查詢結(jié)果給我
select version from v$instance;
select name,value from v$parameter where name like '%multiblock%';
SQL> select name,value from v$parameter where name like '%multiblock%';
SQL> select version from v$instance;
VERSION
-----------------
10.2.0.5.0
NAME       VALUE
-------------------------------------------------- --------------------------------------------------
db_file_multiblock_read_count       16

3、 優(yōu)化方案


DBA
從新收集下統(tǒng)計(jì)信息:
exec dbms_stats.gather_table_stats(ownname=>'ht2',tabname=>'ht_DEPT',estimate_percent=>100,method_opt=>'for all columns size repeat',no_invalidate=>false,degree=>8,cascade=>true);
exec dbms_stats.gather_table_stats(ownname=>'ht',tabname=>'ht_tab_fy',estimate_percent=>100,method_opt=>'for all columns size repeat',no_invalidate=>false,degree=>8,cascade=>true);
然后再執(zhí)行你的語(yǔ)句:
alter session set db_file_multiblock_read_count=128;  --前面加一條
select * FROM ht.ht_tab_fy T
WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%')
AND T.DATA_MONTH = '201709' ;

4、優(yōu)化結(jié)果


表姐
結(jié)果秒出,太感謝了,眼淚嘩嘩的?。。。?/span>

5、現(xiàn)在問題來(lái)了?


表姐的語(yǔ)句為什么得到了優(yōu)化?原理是什么?
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI