안녕하세요. 오라클 문제를 풀려고 하는데 잘 안되네요~~ㅠㅠ
답좀 가르쳐 주셔요..ㅠ-ㅠ 첨부 파일은 데이터 입니다..
sql 튜닝한 것과 실행계획,실행결과까지 알려주시면 정말정말 감사하겠어요..제가 열심히 하고 싶은데 도통 잘 모르겠어서요..아시는 분은 부탁 드릴꼐여~~!!
Exists Subquery를 이용한 SQL 튜닝
아래와 같이 sql문 및 index정보가 있을 경우 SQL문을 Tuning 하십시오.
문제)
1. 수정후의 실행계획, 실행결과 및 SQL문을 제출하시기 바랍니다.
2. SQL문에 대한 분석도 제출하시기 바랍니다.
* SQL문
SELECT /*+ RULE */ X.WARE_CD,count(*)
FROM TAB2 X, (SELECT Y.CD FROM TAB1 Y
WHERE Y.CD_KIND = ’2’ GROUP BY CD) Y
WHERE X.YMD = ’19990315’ AND
X.CD = Y.CD
GROUP BY X.WARE_CD ;
* 인덱스정보(table명:인덱스명:컬럼순서)
TAB1 : TAB1_PK : CD
TAB1 : TAB1_I1 : CD_KIND,CD
TAB2 : TAB2_PK : YMD,WARE_CD,CD
* 실행계획
Execution Plan
-----------------------------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 SORT (GROUP BY)
2 1 FILTER
3 2 INDEX (RANGE SCAN) OF ’TAB2_PK’ (UNIQUE)
4 2 TABLE ACCESS (BY INDEX ROWID) OF ’TAB1’
5 4 INDEX (UNIQUE SCAN) OF ’TAB1_PK’ (UNIQUE)
* trace file정보
********************************************************************************
SELECT X.WARE_CD,count(*)
FROM TAB2 X, (SELECT Y.CD FROM TAB1 Y
WHERE Y.CD_KIND = ’2’ GROUP BY CD) Y
WHERE X.YMD = ’19990315’ AND
X.CD = Y.CD
GROUP BY X.WARE_CD
Call Count CPU Time Elapsed Time Disk Query Current Rows
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Parse 1 0.00 85.05 0 0 0 0
Execute 1 0.00 0.70 0 0 0 0
Fetch 6 519218.75 523108.43 0 1252137 0 45
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Total 8 519218.75 523194.18 0 1252137 0 45
Elapsed Time for Client(sec.): 525783.04
Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user: TUNNING00 (ID=61)
Rows Row Source Operation
------- ---------------------------------------------------
0 STATEMENT
45 SORT GROUP BY
5696 VIEW
5696 SORT GROUP BY
5696 NESTED LOOPS
26639 INDEX RANGE SCAN TAB1_I1 OF TAB1_I1 (NONUNIQUE)
5696 INDEX RANGE SCAN TAB2_PK OF TAB2_PK (UNIQUE)