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
운영게시판
최근게시물
Oracle Q&A 40028 게시물 읽기
No. 40028
NOT EXISTS 사용시 ROWNUM = 1 활용 질문있습니다.
작성자
CHO37(hein0609)
작성일
2013-02-27 00:04
조회수
6,702

UPDATE A
   SET CHK = 'Y'
 WHERE NOT EXISTS (SELECT 1 FROM B
      INNER JOIN C
         ON B.ID = C.REF_ID
                    WHERE A.ID = C.ID
        AND ROWNUM = 1
     )
;

A,C건수 = 10만건
B건수 = 1만건

B테이블은 C테이블이 유효한지 때문에 조인걸어주는거고요

간단히 보면 C에 값이 없으면 A를 업데이트 하는쿼리 인데요

NOT EXISTS 문 안에 ROWNUM = 1 을 써주면 쿼리가 많이 빨라지더라고요

결과값은 동일하고요

혹시 원리를 아는분 있으신가요?;;

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

plan을 살펴 보시면 약간 차이가 있을 거예요.

존재 조건(EXISTS) 나 부존 조건(NOT EXISTS)나

ROWNUM = 1을 사용하기를 권장합니다.

결과에 영향을 주지 않고  STOP KEY로 PLAN이 풀려서

효율적입니다.

 

원래는 ROWNUM=1을 안줘도 동일한 실행을 해야하는데

버전에 따라 옵티마이저가 최적화가 달라서...

박인호(paerae)님이 2013-02-27 14:58에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40031특정테이블 조회시 오류(ORA-00903), 도대체 원인을 모르겠어요ㅠㅠ [2]
Chloe
2013-02-28
12321
40030rollup으로 소계 계산후 가로에 소계표시하기 [1]
소계
2013-02-27
6945
40029날짜 범위 중 구간에 해당하는 일수 구하는 방법? [1]
이한나
2013-02-27
6532
40028NOT EXISTS 사용시 ROWNUM = 1 활용 질문있습니다. [1]
CHO37
2013-02-27
6702
40027쿼리 도움좀 부탁드립니다. [3]
헤헤헤
2013-02-26
5879
40026쿼리가 간단할것 같았는데... [4]
한상원
2013-02-26
5576
40025서브커서 [2]
부탁합니다
2013-02-25
5545
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다