IT study

[SQLP] 52회 3과목 실기 답변 기록 정리 본문

자격증/SQLP (완료)

[SQLP] 52회 3과목 실기 답변 기록 정리

DBnA 2025. 3. 13. 17:54

실기 1. 쿼리 개선하고 인덱스 필요하면 재구성, 서브쿼리는 캐싱효과 고려하지 말아라.

플랜이
스칼라서브쿼이부분 상단에 있고
아래 view로 있었음
count(stopkey)
플랜에 batch관련있었음.. 고려하지못하고 힌트안쓴듯 

전체 조인 먼저하고 주문 기준으로 dense_rank 로 10건 제한한 쿼리 


기억남는 범위에서 답변작성

주문_x1 : 주문번호 -> 주문번호,주문일시

select a.주문번호,

a.주문일시,

b.주문수량*c.상품금액 as 주문금액
,(select 배송상태코드 from 배송 where 배송번호=a.배송번호) 배송상태코드
 
  from (
  select 주문번호, 주문일시 
    from (
  select /*+ index_desc (t 주문_x1)*/주문번호, 주문일시 
    from 주문 t
   where 고객번호 = '1'
   order by 주문일시 desc
  ​)
where rownum<=10 ) a,주문상품 b,상품이력 c
and b.주문번호=a.주문번호
and c.상품번호(+)=b.상품번호
and a.주문일시 >= c.시작일시(+)
and a.주문일시 <= c.종료일시(+)
and c.이벤트명(+)='SQLP';


**사람들 후기 보니 ... 상품이력에서 없던 인덱스를 액세스하는 조건이 나왔다하는데 이부분 작성을 못했다ㅜ 

 

실기2. 튜닝 후 플랜 처럼 나오도록 쿼리 개선 , 테이블 순서는 그대로 기술

파티션된 테이블 2개, 파티션 키컬럼을 가공해서 처리, 
from 주문 a,고객 b,주문상세 c,상품 d,코드상세 e,코드상세 f
튜닝 후 플랜이
 Hash right outer join
          Table full scan 코드상세
           Hash right outer join
                Table full scan 코드상세
                 Hash join
                     Hash group by
                           View
                               Hash join
                                    Table full scan 상품
                                     Hash join
                                      Table full scan 고객
                                            Hash join
                                                Table full scan 주문
                                                Table full scan 주문상세

 

a,b,c,d 먼저 group by 처리 후 코드상세 조인하고 leading, swap_join_inputs로 순서,build 집합 조절
파티션 가공처리 제거함. 



++inline view로 묶었음에도 no_merge 처리안해서..어케될지..ㅠ