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 40890 게시물 읽기
No. 40890
SQL 문의 입니다. ^^
작성자
이현정
작성일
2015-08-06 16:24
조회수
8,195

SELECT  A.*,B.FILE_ID,B.NO,B.DWG_NO FROM MAST T1,TFILE T2
 WHERE T1.NO = 'S1089'
    AND T1.YN = 'N'
    AND T1.CD = 'A4'
    AND T1.W_NO = T2.W_NO
    AND T2.STM_DCMTM_ID >' ' --is not null
    AND NOT EXISTS (SELECT 'X'
                           FROM RAP_FILE
                          WHERE CD = 'L'
                            AND FILE_ID = T2.FILE_ID);

 위와 같은 SQL이 있습니다.(T1 300만건, T2 400만건, RAP_FILE은 40만건입니다.)
 T1 조건절을 주면 20만건, T2와 조인해도 같은 20만 건수 입니다.
 AND NOT EXISTS를 하지 않으면 20만건이 나오고
 AND NOT EXISTS를 하면 0건이 나옵니다.
 이거 어떻게 하면 성능이 조금이라도 좋아 질까요? ^^;
 140초가 걸리네요.
 


엑셀파일이 보안에 걸려서 붙여넣기가 안되네요. ^^
ID                             PID                        Operation                      Name                   Rows                      Bytes                    Cost                           CPU Cost                        IO Cost
0  SELECT STATEMENT                                                                                                1                             102                      11526                      111M                                11520
1 0   SORT AGGREGATE                                                                                               1                              102     
2 1     NESTED LOOPS ANTI                                                                                    55416                       5519K                     11526                   111M                                 11520
3 2       NESTED LOOPS                                                                                            55534                      4609K                      11524                    96M                                  11519
4 3         TABLE ACCESS BY INDEX ROWID MAST                                                 7447                        189K                         348                   4426668                           348
5 4           INDEX RANGE SCAN MAST_IE1                                                               7877                                                            9                       454432                                 9
6 3         TABLE ACCESS BY INDEX ROWID TFILE                                                      7                            413                           2                          12421                                2
7 6           INDEX RANGE SCAN TFILE_IX3 8   1 2180 1
8 2       INDEX UNIQUE SCAN RAP_FILE_PK                                                          529                          8993                           1                               263                                 1

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

SELECT t1.*
     , t2.file_id, t2.no, t2.dwg_no
  FROM mast     t1
     , tfile    t2
     , rap_file t3
 WHERE t1.no = 'S1089'
   AND t1.yn = 'N'
   AND t1.cd = 'A4'
   AND t1.w_no = t2.w_no
   AND t2.stm_dcmtm_id > ' ' -- IS NOT NULL
   AND t3.cd(+) = 'L'
   AND t3.file_id(+) = t2.file_id
   AND t3.cd IS NULL

;

마농(manon94)님이 2015-08-07 10:59에 작성한 댓글입니다.

마농님 감사합니다. 효과가 없었네요.

아래와 같이  /*+NO_UNNEST*/ 힌트를 사용하니 280초에서 120초로 내려 왔습니다.

감사합니다. ^^

SELECT A.*,B.FILE_ID,B.NO,B.DWG_NO FROM MAST T1,TFILE T2
WHERE T1.NO = 'S1089'
AND T1.YN = 'N'
AND T1.CD = 'A4'
AND T1.W_NO = T2.W_NO
AND T2.STM_DCMTM_ID >' ' --is not null
AND NOT EXISTS (SELECT /*+NO_UNNEST*/'X'
FROM RAP_FILE
WHERE CD = 'L'
AND FILE_ID = T2.FILE_ID);

 

이현정님이 2015-08-07 11:33에 작성한 댓글입니다. Edit

1. 조인이 너무 NL 위주네요.
  - 건수가 많은 경우 HASH  가 유리할 수 있습니다.
2. 실행계획에 Sort Aggregate 가 보이네요?
  - 쿼리와 플렌이 다르네요.

마농(manon94)님이 2015-08-07 11:38에 작성한 댓글입니다.

마농님 덕분에 여러가지로 많은 공부를 하고 있습니다.  감사합니다.

/*+ UNNEST HASH_SJ */ 로 하니 280초에서 220초로 나오네요.

 

이현정님이 2015-08-07 11:53에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40893'트리거에 기본값' 이라고 혹시 아시는분 계시나요?
질문
2015-08-13
7881
40892sql lag 문의드립니다. [3]
뚜뚜
2015-08-07
8006
40891pro c 컴파일 후 에러메시지 입니다. 고견 부탁해요!
김영감
2015-08-06
8375
40890SQL 문의 입니다. ^^ [4]
이현정
2015-08-06
8195
40888pl/sql htp.p기능을 통해 사원조회 수정 삭제기능을 만드려고하는데
천범석
2015-08-03
7223
40887계층구조 데이터 구해오기[내용수정] [2]
초보
2015-07-31
7958
40886잘 이해가 안되는 SQL 결과에 대하여 질문을 드립니다. [3]
김흥수
2015-07-31
7794
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다