테이블에 어떤 값이 잇나 없나 찾을때요.. 0 1 1,854

by 손님 [SQL Query] query [2009.08.20 10:34:42]


BDD테이블에서 여러개의 주문번호중 status가 c1이 아닌게 잇나 없나 보려고 하는대요
위,아래중 어떤개 더 빠른가요? in 조건가 or조건요.

근대 in 조건을 플랜을 떠보니..인덱스 스캔을 2번 하더라구요.;;

or조건은 1번 하는대..


그래고 제가 힌드를 no컬럼에 인덱스가 잇거든요..이걸 뒤서부터 찾으란
힌트를주면 더 빠른가요? /*+ index_desc(BDD idx_no) */

SELECT 1                                      
FROM  BDD                            
WHERE  (NO =’121’ OR  _NO =’2323’)
AND  STATUS != ’C1’                   
AND  ROWNUM = 1  

----------------------

SELECT  1                                 
FROM  BDD                            
WHERE  NO IN (’121’,’2323’,’’)  
AND  STATUS != ’C1’                   
AND  ROWNUM = 1  

by 러드 [2009.08.20 10:56:25]
or는 어떤한 놀리합 관계도를 표현이 가능하고!!
in은 하나의 컬럼이 여려개의 = 조건을 가지고 경우에만 가능합니다.

or보다는 in을 사용하는것이
in은 서브쿼리를 사용하여 보다 유연한 확장이 가능하고
하나의 컬럼이 비교되기 때문에 인덱스 구성에 대해서는 유리합니다.
그리고 무엇보다 옵티마이저는 복잡한 or에 매우 취약하다는점^^

이 글은
# 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=2458033&
1. 놀리합 (or, in) 연산자의 이해에서 읽은 부분입니다^^

수고하세요 ㅋㅋ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입