그렇군요.
두개의 필드를 조합하면 unique해지는데 두세개의 필드를 어떻게 primary key로 잡는지요.
아래에서 day와 swid를 키로 잡는다면 구문을 좀..
hc=> \d day_filecheck
day date, // 이것과
swid text, // 이것이
ftype char(1),
fsize int4,
....
select * into temp tmp_0 * from tmptst_ck where (day,swid) not in (select day,swid from day_filecheck);
위와 같이만해도 조금은 빨라지네요
>>정재익 님께서 쓰시길<<
:: query 문 자체가 시간이 걸릴수 밖에 없는 문장입니다. 꼭 그런 식으로 query 를 사용해야 하는지요.
:: 가장 좋은 방법은 여러 필드를 조합해서라도 primary key 를 만들어 주는 것입니다. 그렇게 할 경우,
:: 만약 2/3개의 필드를 조합해서라도 primary key 를 선언할 수 있다면, Query 문이 index 를 타게 되므
:: 로 훨씬 빨라질 것으로 생각됩니다. Query 문이 가장 느려지는 주된 원인은 except 구문입니다. 저 구
:: 문을 사용하지 않을 방법을 강구하는 수 밖에 없습니다.
::
:: >>가우 님께서 쓰시길<<
::
:: :: / insert into day_filecheck select * from tmp_fchk
:: :: except select * from day_filecheck;
:: ::
:: :: 배치로 들어온데이타를 tmp_fchk라는 임시태이블에 넣어두고 day_filecheck태이블에 insert하려는
:: 데
:: :: 시간이 너무걸려서요, 좋은방법이 없을까요.
:: :: 배치파일이 잘못동작하거나 실수로 두번입력을 했을때 데이타가 중복되지 않게 하려고 합니다.
:: ::
:: :: 참고로 위태이블에는 unique한 필드는 없구요.
:: ::
|