대량의 데이터 조회! 0 3 605

by 타핑이 [Oracle 기초] [2018.08.02 17:06:27]


안녕하세요

자료를 추출해달라는 요청이 많이 오는 편인데요

지금은 다른 사람들이 작성 해놓은 쿼리를 가져다가 데이터를 뽑아주는데,

매번 로봇처럼 자료만 추출해주다보니 궁금한게 생겼어요

하나의 테이블에 컬럼이 한 50개? 데이터가 수천만? 건 정도 있고 pk가 딱 하나 있고

해당 pk를 몇만개 주면서 데이터를 뽑아 달라고 할때

WITH A AS 구문안에 pk를 몇만개 만들어서 IN 절에 SELECT문으로

넣어서 조회를 해봤는데 엄청 나게 오래 걸리더라구요 PK라 오래 안걸릴줄 알았는데

SELECT * FROM TABCD223 WHERE SEQ IN (SELECT SEQ FROM A)

이렇게요.  뭔가 더 효율적인 방법이 있나요?...

by 우리집아찌 [2018.08.02 17:26:25]

IN 절은 해당 조건이 많아지면 비효율적입니다.

테이블 하나 만들어서 pk값 넣어두고 join 해서 사용해보세요.


by 아발란체 [2018.08.02 20:00:25]

요청 단위가(pk) 몇만개 단위라면 엄청 오래 걸릴 작업은 아닌 것 같고 

아찌님 말씀처럼 join 으로 풀이를 하면 속도 향상이 있지 않을까 합니다.


by 우분트 [2018.08.05 12:32:04]

IN 절의 SEQ를 임시테이블로 생성하고 FULL 스캔하여 TABCD223를  USE_HASH() 힌트로 진행하면 어떨가요?

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