[SQLP실기풀이]6장 고급SQL튜닝(2)-대량DML튜닝 33번

Yu River·2022년 7월 3일
0

SQLP실기연습

목록 보기
3/44

문제 링크 : https://velog.io/@yooha9621/SQLP실기문제-대량DML튜닝33번

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

  1. 기존 : 100만명 중 2만건의 법정대리인_연락처를 Update한다.
    • 이 때 고객 테이블을 업데이트 1건당 다시 액세스한다.
    • 고객 테이블 내 법정 대리인 연락처를 다시금 조회하는 데 이 때 없으면 그냥 기존 등록되어있는 연락처로 다시 업데이트된다.
    • 👉 없으면 기존 연락처로 다시 업데이트 되는 부분을 생략하도록 한다.

2) 튜닝한 쿼리

튜닝 전 쿼리

SQL >
UPDATE 고객 C
	SET 법정대리인_연락처 =
    	NVL( (SELECT 연락처
				FROM 고객
				WHERE 고객번호 = C.법정대리인_고객번호)
			,C.법정대리인_연락처)
WHERE 성인여부 = 'N';

튜닝 후 쿼리

SQL >
UPDATE (
  SELECT /*+ LEADING(A) USE_NL(B) */ A.법정대리인_연락처, B.연락처
  FROM 고객 A , 고객 B
  WHERE
  A.성인여부 = 'N'
  AND B.고객번호 = A.법정대리인_고객번호
  AND B.연락처 <> A.법정대리인_연락처 --이미 같으면 업데이트 하지 않는다.
  AND B.연락처 IS NOT NULL )
SET 법정대리인_연락처 = 연락처;

🍎 정리

  • 수정가능 조인뷰를 활용해 2번 액세스하는 걸 1번 액세스로 줄여 update하였다.
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글