- 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' → A 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' 카테고리의 다른 글
인라인 뷰의 활용 (0) | 2020.05.27 |
---|---|
서브 쿼리 활용 (0) | 2020.05.27 |
SQL 집합의 가공 (0) | 2020.05.27 |
DB 절차적 사고 VS 집합적 사고 (2) | 2020.05.27 |
DB 테이블 클러스터링 팩터 (0) | 2020.05.27 |