안녕하세요. 테이블 만드는 것 질문드립니다.. 0 5 2,535

by um..... [2008.06.27 13:53:44]


안녕하세요.

제가 질문드리려고 하는것은요.  약 2000만건의 데이터가 있는거에서  약 100만건정도씩 빼서

테이블을 만드려고합니다. 여기서 테이블 만드는것은 별 어려움이 없지만

제가 여쭈고 싶은 것은 만들어지는 속도입니다.. 속도를 조금이나마 높일수 있는 방법이 없을까 해서요..

100만건이 안되더라도  30분 ~ 1시간 이 걸려서요.

여러 고수님들 좋은 방법이 없을까요? 지금     병렬처리옵션     써서도 해보았지만 그다지 빠른 느낌이 안들어서요..

매번 만들때마다 요구조건이 달라서.. 부탁드립니다 고수님들..

 

CREATE TABLE 테이블
SELECT
a.MDNO as 통합메타NO
,(select DB_NAME from DB_INFORM where DB_ID = a.DBNAME) as DB명
,(select IDVALUE from IDENTIFIER where IDTYPE = ’02’ and MDNO = a.MDNO) as 식별자
,(select TOTAL_INFOCENTER_NAME from TOTAL_INFOCENTER where AGENCY = a.NOTIFICATIONAGENCY) as 종합
,(select CLASSIFICATIONTEXT from CLASSIFICATION where MDNO = a.MDNO and CLASSIFICATIONTYPE=’01’) as 종합분류
,(select SPECIAL_INFOCENTER_NAME from SPECIAL_INFOCENTER where AGENCY = a.SERVICEAGENCY) as 전문
,a.MAINTITLE as 메인제목
,a.ALTERNATIVETITLE as 대체제목
,a.CREATOR as 작성자
,a.KEYWORDS as 키워드
,a.PUBLISHER as 발행처
,(select DATEVALUE from KIXDATE where DATETYPE=’04’ and MDNO = a.MDNO) as 발행일
,(select DATEVALUE from KIXDATE where DATETYPE=’01’ and MDNO = a.MDNO) as 생성일
,(select DATEVALUE from KIXDATE where DATETYPE=’05’ and MDNO = a.MDNO) as 갱신일
,(select DESCRIPTIONCONTENT from  DESCRIPTION where DESCRIPTIONTYPE = ’01’ and MDNO = a.MDNO) as 초록
,(select DESCRIPTIONCONTENT from  DESCRIPTION where DESCRIPTIONTYPE = ’04’ and MDNO = a.MDNO) as 목차정보
,(select NAME from  LIST13 where MIMENO = a.FILEFORMAT) as 파일형식
,a.URL as 원문URL
,TO_CHAR(A.REGTIME,’YYYY-MM-DD’) as 통합메타생성일
,TO_CHAR(A.UPDTIME,’YYYY-MM-DD’) as 통합메타수정일
,(SELECT IDVALUE from KNOWLEDGE02.IDENTIFIER where MDNO = a.MDNO and IDTYPE=’01’) as UCI
FROM
 METADATA a,
 SPECIAL_INFOCENTER b
WHERE
a.NOTIFICATIONAGENCY = ’KERIS’ AND
a.SERVICEAGENCY = b.AGENCY AND
a.DBNAME !=’27’ AND
a.DELDATE = ’12345678’ AND
a.SERVICEAGENCY != ’0983’ AND
a.SERVICEAGENCY != ’0981’ AND
a.SERVICEAGENCY != ’0998’ AND
a.SERVICEAGENCY != ’ICIE’ AND
a.SERVICEAGENCY != ’0666’ AND
a.SERVICEAGENCY != ’KWDI’;

이런식으로 처음 만들때 만들었거든요..

by 현 [2008.06.27 14:56:00]
일단 구문에 AS가 빠졌네요.
테이블 생성시에 걸리는 시간이야 어쩔 수 없겠지만,
혹시 SELECT 문에서 비효율이 발생하지는 않는지 확인이 필요합니다.

일반적으로 SELECT문을 날리면 금방 나오는데 그 이유는 부분범위처리를 하기 때문입니다. 그런데 테이블을 만든다는 것은 부분범위처리를 타지 않기 때문에 오래 걸리는 것처럼 느껴질 수도 있습니다.

by um..... [2008.06.27 15:30:57]
감사합니다 현님.. 근데요 as가 어디 빠진건지..
부분범위처리를 안하면 더 빠르게 만들수 있다는 말씀이신지...

by 구둘기 [2008.06.27 15:54:13]
CREATE TABLE 테이블 과 SELECT 문 사이에 AS 가 빠졌습니다.
테이블을 만든다는거 자체가 부분범위 처리를 하지 않습니다.






by um..... [2008.06.27 15:56:56]
하핫 그러네요.. 감사합니다..

현님 구둘기님 정말 감사드려요..

혹시나 하고 여쭤봤는데.. 음.. 별수없네요^^

by 현 [2008.06.27 16:03:29]
별수 없다고 포기하실것이 아니라
SELECT 문에서 비효율이 발생하지 않는지 확인을 하셔야 합니다.
100만건 만드는 거야 어쩔 수 없지만, SELECT 절에서 비효율이 발생하고 있다면 그걸 효율적으로 바꿔줘야 합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입