008. UNION을 사용한 쓸데없이 긴 표현 - llighter/database GitHub Wiki

SQL 레벨업

UNION을 활용한 조건 분기는 WHERE 구만 조금씩 다른 여러 개의 SELECT 구문을 합쳐서, 복수의 조건에 일치하는 하나의 결과 집합을 업고 싶을 때 사용한다.

  • 단점: 내부적으로 여러 개의 SELECT 구문을 실행하는 실행 계획으로 해석 -> I/O 비용 증가

1. UNION을 사용한 조건 분기와 관련도니 간단한 예제

p109 예제 추가할 것

- UNION을 사용했을 떄의 실행 계획 문제

실행 계획 추가할 것

  • UNION 쿼리는 Items 테이블에 2회 접근한다는 것을 알 수 있다.
  • 접근할 떄마다 TABLE ACCESS FULL이 발생

- 정확한 판단 없은 UNION 사용 회피

2. WHERE 구에서 조건 분기를 하는 사람은 초보자

위의 예제와 이어서 추가할 것

3. SELECT 구를 사용한 조건 분기의 실행 계획

실행 계획 추가할 것

  • Items 테이블 접근이 1회로 줄어듬.
  • 가독성 향상

UNION을 사용한 분기는 SELECT '구문'을 기본 단위로 분기하고 있다. -> 절차 지향형의 발상
CASE 식을 사용한 분기는 '식'을 바탕으로 하는 사고 이다.
'구문' -> '식' : SQL을 마스터하는 열쇠!