[SQLP실기풀이]4장 조인튜닝(4)-고급조인기법 54번

Yu River·2022년 6월 26일
0

SQLP실기연습

목록 보기
26/44

문제 링크 : https://velog.io/@yooha9621/SQLP실기문제53번

1) 쿼리 튜닝

1.작업지시 테이블 액세스

  • 작업 구분 코드 ('A' 또는 'B')가 선두 컬럼인 인덱스를 사용해야 한다.
  • 방문 예정 일자를 '=' 조건으로 조회함과 동시에 작업 구분 코드에 따라 개통접수 테이블 또는 장애접수 테이블과 NL 조인을 한다.

2.개통접수 테이블 액세스

  • 작업지시 테이블로 부터 NL조인이 처리되므로 기존 개통접수_PK 인덱스를 이용한다.

3.장애접수 테이블 액세스

  • 작업지시 테이블로 부터 NL조인이 처리되므로 기존 장애접수_PK 인덱스를 이용한다.

4.작업지시 테이블과의 조인

  • 각 테이블과 NL조인을 할 때 사용하는 선두컬럼이 다르므로 UNION ALL 로 처리하여 따로따로 조인을 시도한다.

2) 튜닝한 SQL문

SELECT 작업일련번호 , 작업자ID , '개통' 작업구분, 고객번호 , 주소
  FROM 작업지시 A , 개통접수 B
  WHERE A.작업구분코드 = 'A'
  AND 방문예정일자 = TO_CHAR(sysdate , 'YYYYMMDD')
  AND A.접수번호 = B.개통접수번호
UNION ALL
SELECT 작업일련번호 , 작업자ID , '장애' 작업구분, 고객번호 , 주소
  FROM 작업지시 A , 장애접수 C
  WHERE A.작업구분코드 = 'B'
  AND 방문예정일자 = TO_CHAR(sysdate , 'YYYYMMDD')
  AND A.접수번호 = C.장애접수번호

🍎 정리

  • 방문 예정일자가 '오늘' 인 작업지시 데이터를 드라이빙 테이블로 놓고 작업구분코드에 따라 개통접수 테이블과 장애접수 테이블 각각 NL조인하여 UNION ALL 처리한다.
  • 날짜 비교는 방문예정일자 = TO_CHAR(sysdate , 'YYYYMMDD') 로 했다.

😥 헷갈렸던 부분

  • 방문예정일자 는 말그대로 연-월-일 까지만 나와있는 걸 나타낸다.
  • 힌트 지정 불가라고 써져있었는데 힌트를 썼다.. 힌트 지워..!!!!
    • /+ LEADING(A) USE_NL(B) / 라구 썼다.
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글