database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 1820 게시물 읽기
No. 1820
[질문] SQL tuning : IN 과 OR 절의 차이점
작성자
짝퉁헤리포터(bh1004)
작성일
2009-02-19 10:14ⓒ
2009-02-19 12:05ⓜ
조회수
9,774

안녕하세요?


DB2 SQL tuning에 관련하여 질문드립니다. 

우선 현재 들어 오고 있는 query에 OR 절이 수십번 (평균 40여번 ) 반복되어 들어 옵니다.

예를 들면


select pt.Id, cd.Status, ch.Name 

from parent pt, child ch 

where pt.ChId = ch.Id

and pt.StatusId = 1 or pt.StatusId = 5 or pt.StatusId = 12 ......... pt.StatusId = 234 ;    -- <== 이런식으로 OR 절이 수십번 계속 반복됩니다.

 

Oracle의 경우 (적어도 9i 에서는 ) OR절과 IN절의 Query plan 및 cost는 차이가 없으나  

실제 index를 검색하고 검색된 값을 return하는 과정에 차이가 있어 

값을 명확히 지정할 수 있는 경우에는 IN 절을 사용할 것을 추천한다고 알고 있습니다.



DB2에서는 Where 절의 조건으로 IN과 OR를 썼을 때, 이 둘의 차이가 있는지 궁금합니다. 


감사합니다.

이 글에 대한 댓글이 총 1건 있습니다.

제 경험으로는 or = in 입니다. 
or를 in으로 바꾸어 plan이 변경되거나 실행시간이 빨라진 경우는 본적이 없습니다. 
느려진 경우라면 반복되는 횟수가 증가하면서 조회 범위때문에 full scan이 발생하는 경우가 대부분이었습니다.
조는냥이님이 2009-02-19 20:02에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1823DB2에도 오라클과 같은 힌트가 존재 하나요? [2]
정차신
2009-03-04
11016
1822v9.5에서 DPF기능사용... [1]
김건우
2009-02-20
10383
1821function 생성시 오류가 발생했는데 해결책을 모르겠습니다. [1]
김영하
2009-02-19
10786
1820[질문] SQL tuning : IN 과 OR 절의 차이점 [1]
짝퉁헤리포터
2009-02-19
9774
1819SCROLL CURSOR 사용법좀 알려주세요(페이징)
김한중
2009-02-12
9632
1814update문 처리시 특수문자 처리 방법 알려주세요 [1]
지창용
2009-02-05
11278
1813데이터 타입을(수치->문자) 변경하고, 데이터 길이가 부족한 부분은 임의의 문자로 채우려고 할때... [1]
권용운
2009-02-03
10228
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다