- 3장 - SQL의 조건 분기2024년 09월 19일
- 31514
- 작성자
- 2024.09.19.:08
SQL은 조건 분기를 할 때, CASE 식을 사용하지만 UNION을 사용하는 경우도 있다.
하지만 UNION을 사용하면 내부적으로 여러 개의 SELECT 구문을 실행하는 실행 계획으로 해석되기 때문에 테이블에 접근하는 횟수가 많아져서 I/O 비용이 증가한다.
UNION 조건 분기의 문제점
-- UNION을 사용한 조건 분기 쿼리(예시) select item_name, year, price_tax_ex as price from items where year <= 2001 union all select item_name, year, price_tax_in as price from items where year >= 2002;
- 좋지 않은 가독성
- TABLE FULL ACCESS로 2번 접근 -> 성능 감소
해결 방법
SELECT item_name, year, CASE WHEN year <= 2001 THEN price_tax_ex WHEN year >= 2002 THEN price_tax_in END AS price FROM items;
결과
좋은 가독성과 더불어 TABLE FULL ACCESS가 1번으로 감소했다.
하지만 만약에 WHERE 구에서 취급하는 필드에 적절한 인덱스가 존재할 경우 테이블에 2번 접근하는 것이 더 좋은 성능을 가질 수 있다.
따라서 실행 계획을 살펴보고 더 좋은 쿼리문을 선택하는 것이 바람직하지만, 대부분의 CASE 식이 더 성능이 좋다.
조건 분기를 WHERE 구로 하는 사람들은 초보자다. 잘 하는 사람은 SELECT 구만으로 조건 분기를 한다.
'Book > SQL 레벨업' 카테고리의 다른 글
8장 - SQL의 순서 (0) 2024.09.27 7장 - 서브쿼리 (1) 2024.09.25 6장 - 결합 (0) 2024.09.24 5장 - 반복문 (0) 2024.09.23 4장 - 집약과 자르기 (0) 2024.09.20 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)