서버 개발/프로그래머를 위한 RDBMS

SQL IN의 특징과 IN의 활용

지노윈 2020. 5. 27. 10:50
반응형

- OR 연산의 해소

select ...
from tab1 x, tab2 y, tab3 z
where ... join_conditions...
  and ((@선택 = 1 and
        구분 = 10
        코드 = @코드)
    or (@선택 = 2 and
       구분 between 20 and 30 and
        코드 = @코드))

in과 case when 으로 가능한한 OR를 해소 시키세요.

select ...
from tab1 x, tab2 y, tab3 z
where ... join_conditions...
  and 구분 in (case when 선택 = 1 then 10 else 20 end, 
               case when 선택 = 2 then 30)
  and 코드 = @코드

- IN 연산자의 특성

IN은 n개의 = 입니다. 

 

COL1 BETWEEN 'A' AND 'G' →                             G 

IN은 선분을 점으로 만들어 줍니다.

COL1 IN ('A', 'B', 'C', 'D', 'E', 'F', 'G') → •A •B •C •D •E •F  •G

 

인덱스 탐색에서의 between

select ...
from tab
where col1 between 11 and 12
  and col2 = 'B'

11에서 12 데이터를 모두 읽으면서 'B'인 것을 찾습니다.

 

인덱스 탐색에서의 in

select ...
from tab
where col1 in (11, 12)
  and col2 = 'B'

점이 되었으므로 원하는 결과만 빼내옵니다.

 

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 게임 서버 프로그래머가 알아야 할 RDBMS

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 옵티마이저 맛보기

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 테이블 조인 하면 느리다?

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 리커시브 모델의 활용

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 아크 모델(exclusive or)에서의 주의점

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 부분범위 처리와 전체 범위처리

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 인덱스의 제대 사용하자

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - DB 옵티마이저

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - Nested Loop/Sort Merge/Hash Join

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - DB 테이블 클러스터링 팩터

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - DB 절차적 사고 VS 집합적 사고

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - SQL 집합의 가공

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - SQL IN의 특징과 IN의 활용

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 서브 쿼리 활용

[데이터베이스/게임 서버 프로그래머가 알아야 할 RDBMS] - 인라인 뷰의 활용

'서버 개발 > 프로그래머를 위한 RDBMS' 카테고리의 다른 글

인라인 뷰의 활용  (0) 2020.05.27
서브 쿼리 활용  (0) 2020.05.27
SQL 집합의 가공  (0) 2020.05.27
DB 절차적 사고 VS 집합적 사고  (2) 2020.05.27
DB 테이블 클러스터링 팩터  (0) 2020.05.27