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

Yu River·2022년 6월 26일
0

SQLP실기연습

목록 보기
29/44

문제 링크 : https://velog.io/@yooha9621/SQLP실기문제-날짜57번

1) 쿼리 튜닝

1. 장비 테이블 액세스

  • 조회조건 중 장비구분코드 = 'A001'이 적용될 수 있도록 선두컬럼이 장비구분코드인 장비_X1 인덱스를 사용한다.
  • 드라이빙 테이블로 들어간다.

2. 상태변경이력 테이블 액세스

  • 조회 조건으로 '장비번호'를 선두로 하고 상태변경이력_PK 인덱스를 사용해 NL조인하여 변경일자 + 변경 순번의 가장 최근 1건을 뽑는다.
    • 이 때 정렬이 무너지지 않도록 처리해야한다.

2) 튜닝한 SQL문


SELECT P.장비번호 , P.장비명 , A.상태코드 AS 최종상태코드
, A.변경일자 AS 최종변경일자 , A.변경순번 AS 최종변경순번
  FROM 장비 P , 상태변경이력 A
  WHERE P.장비구분코드 = 'A001'
  AND A.장비번호 = P.장비번호
  AND (P.변경일자 , P.변경순번) = (
	  SELECT 변경일자 , 변경순번
      FROM (
        SELECT 변경일자 , 변경순번
        FROM 상태변경이력 
        WHERE 장비번호 = A.장비번호
        ORDER BY 변경일자 DESC , 변경순번 DESC
        )
     WHERE ROWNUM <=1 )
ORDER BY P.장비번호;

🍎 정리

  • 장비구분코드가 'A0001' 인 장비 데이터를 드라이빙 테이블로 놓고 장비번호로 상태변경이력 테이블과 조인하는데 조인하는 데이터의 변경일자와 변경순번이 가장 최근인 1건만 가지고 오기 위해 다중컬럼 비교절을 통해 다시 상태변경이력을 조회하도록 한다.
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글