• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (109)
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (25)
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • 3장 - SQL의 조건 분기
      2024년 09월 19일
      • 31514
      • 작성자
      • 2024.09.19.오후03: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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
    • UNION 조건 분기의 문제점
    • 해결 방법
    • 결과
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.