008. UNION을 사용한 쓸데없이 긴 표현 - llighter/database GitHub Wiki
UNION
을 활용한 조건 분기는 WHERE
구만 조금씩 다른 여러 개의 SELECT
구문을 합쳐서, 복수의 조건에 일치하는 하나의 결과 집합을 업고 싶을 때 사용한다.
- 단점: 내부적으로 여러 개의
SELECT
구문을 실행하는 실행 계획으로 해석 -> I/O 비용 증가
UNION
을 사용한 조건 분기와 관련도니 간단한 예제
1. p109 예제 추가할 것
UNION
을 사용했을 떄의 실행 계획 문제
- 실행 계획 추가할 것
UNION
쿼리는Items
테이블에 2회 접근한다는 것을 알 수 있다.- 접근할 떄마다
TABLE ACCESS FULL
이 발생
UNION
사용 회피
- 정확한 판단 없은 WHERE
구에서 조건 분기를 하는 사람은 초보자
2. 위의 예제와 이어서 추가할 것
SELECT
구를 사용한 조건 분기의 실행 계획
3. 실행 계획 추가할 것
Items
테이블 접근이 1회로 줄어듬.- 가독성 향상
UNION
을 사용한 분기는SELECT
'구문'을 기본 단위로 분기하고 있다. -> 절차 지향형의 발상
CASE
식을 사용한 분기는 '식'을 바탕으로 하는 사고 이다.
'구문' -> '식' : SQL을 마스터하는 열쇠!