MySQL CASE 구문에서 OR과 IN의 가독성 차이(개인적 견해)

2023. 8. 21. 16:17·Database & Data/MySQL
728x90
SMALL

기본적으로 CASE 문에서는 복수의 조건을 테스트할 때 OR를 사용하곤 한다. 그러나, 같은 컬럼의 값이 특정 집합에 속하는지를 검사하려면 IN 연산자를 사용하는 것이 더 간결하고 읽기 쉬웠다.

 

예를 들어, lm.subj_nm 값이 '국어' 또는 '국어선택학습'인지를 검사하려면 다음과 같이 OR를 사용할 수 있다:

when lm.subj_nm = '국어' or lm.subj_nm = '국어선택학습' then '1'

그러나 이것은 IN을 사용하면 더 간결하게 표현할 수 있다:

WHEN lm.subj_nm IN ('국어', '국어선택학습') THEN '1'

두 쿼리는 완전히 동일한 결과를 내지만, 후자는 명확성과 가독성 면에서 더 우수하다고 생각한다. 특히 조건이 많아질수록 IN 연산자를 사용하는 것이 코드를 이해하고 유지보수하는 데 도움이 되었다.


이번엔 반대로 돌려서 상황을 봐보자.

예를 들어, '국어', '국어선택학습', '수학', '수학선택학습', '영어', '영어선택학습' 중 하나와 일치하는지 검사하려면 IN 연산자를 사용하는 것이 훨씬 더 간단하다:

WHEN lm.subj_nm IN ('국어', '국어선택학습', '수학', '수학선택학습', '영어', '영어선택학습') THEN '1'

대조적으로 OR를 사용하면 이것이 훨씬 복잡해진다:

when lm.subj_nm = '국어' or lm.subj_nm = '국어선택학습' or lm.subj_nm = '수학' or lm.subj_nm = '수학선택학습' or lm.subj_nm = '영어' or lm.subj_nm = '영어선택학습' then '1'

따라서, 개인적으로는 IN 연산자를 사용하는 것이 더 간결하고 가독성이 좋았다.

728x90
SMALL
저작자표시 비영리 변경금지 (새창열림)

'Database & Data > MySQL' 카테고리의 다른 글

Local MySQL로 DB 서버 만들기(외부 IP에서 접속)  (0) 2023.08.26
로컬 DB 공유기 포트 포워딩 하는 방법(방화벽 설정 포함)  (0) 2023.08.26
MySQL --login-path 옵션 이해하기  (0) 2023.07.27
MySQL SQL 쿼리 성능 향상: CASE WHEN vs UNION  (0) 2023.07.26
MySQL 인덱스(클러스터드, 세컨더리, 커버링) 가볍게 이해하기  (0) 2023.07.17
'Database & Data/MySQL' 카테고리의 다른 글
  • Local MySQL로 DB 서버 만들기(외부 IP에서 접속)
  • 로컬 DB 공유기 포트 포워딩 하는 방법(방화벽 설정 포함)
  • MySQL --login-path 옵션 이해하기
  • MySQL SQL 쿼리 성능 향상: CASE WHEN vs UNION
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
MySQL CASE 구문에서 OR과 IN의 가독성 차이(개인적 견해)
상단으로

티스토리툴바