[SQLP실기풀이]6장 고급SQL튜닝(4) 파티셔닝 24번

Yu River·2022년 7월 4일
0

SQLP실기연습

목록 보기
6/44

문제 링크 : https://velog.io/@yooha9621/SQLP실기문제-파티셔닝24번

1) 내가 생각한 튜닝 포인트🤔

  1. 기존 쿼리는 자료전송일시 테이블을 파티션으로 조회하지 못하고 있다.
    • 이 때 등록일시 > 상담일시 이다.(상담일시가 먼저 발생함)
    • 👉 '등록일시' 조회 조건을 추가하여 해당되는 파티션만 읽을 수 있게 한다.

2) 튜닝한 쿼리

튜닝 전 쿼리

SQL > SELECT a.*
	(SELECT NVL (MAX('Y'), 'N')
	FROM 자료전송이력
	WHERE 상담원ID = a. 상담원ID
	AND 상담일시 = a. 상담일시)
	AND ROWNUM = 1) 자료전송여부
FROM (SELECT 상담원ID, 상담일시, 상담접촉구분코드
		, 연락전화번호, 통화자명, 호식별번호, 상담처리상태코드, 조직ID
      FROM 고객상담
      WHERE 고객번호 = :cust_num
      ORDER BY 고객번호 DESC, 상담일시 DESC) a
WHERE ROWNUM <= 10;

튜닝 후 쿼리

SQL > SELECT a.*
	(SELECT NVL (MAX('Y'), 'N')
	FROM 자료전송이력
	WHERE 상담원ID = a. 상담원ID
	AND 상담일시 = a. 상담일시
    AND 등록일시 >= 상담일시
	AND ROWNUM = 1) 자료전송여부
FROM (SELECT 상담원ID, 상담일시, 상담접촉구분코드
		, 연락전화번호, 통화자명, 호식별번호, 상담처리상태코드, 조직ID
      FROM 고객상담
      WHERE 고객번호 = :cust_num
      ORDER BY 고객번호 DESC, 상담일시 DESC) a
WHERE ROWNUM <= 10;

🍎 정리

  • 자료전송이력을 조회할 때 파티션만 조회할 수 있도록 '등록일시' 조회 조건을 추가한다.
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글