dntcall 이라는 테이블에 80만건정도 데이터가 있으며
데이터는 reg_Date기준으로 1일,3일 각각 20만건정도 데이터 있습니다.
중복제거한후 나머지값들에 대해 update 진행하려고 하는데...시간이 오래걸려서 문의드립니다.
UPDATE DNTCALL
SET CHK = 'Y'
WHERE ID IN ( SELECT A.ID
FROM DNTCALL A
WHERE A.REG_DATE = '20170301'
MINUS
SELECT A.ID
FROM DNTCALL A
WHERE A.REG_DATE = '20170303'
)
이렇게 했는데....SELECT 시간은 40초 정도 나오는데 UPDATE가 오래걸립니다.
SELECT 결과 100건 정도 나옵니다. 100건에 대해 업데이트 진행하려고 합니다.
단축할수 있는방법이 있는지 문의드립니다.
감사합니다.
IN절 안에있는 SELECT 쿼리가 40초 정도 걸리구요..
인덱스는 생성을 했습니다.
40만건씩 2번에 걸쳐 데이터가 들어오고 있구요.
작업전 delete 하여 테이블 비우고 insert 진행됩니다.
80만건중 중복데이터를 제외한 나머지 데이터를 구하려고 하는데 REG_DATE를 보면안될거같아서..
UPDATE DNTCALL A
SET A.CHK = 'Y'
WHERE ID IN ( SELECT ID
FROM DNTCALL
GROUP BY ID
HAVING COUNT(ID) =1
)
이런식으로 작업후 전체데이터에서 중복이 아닌값에 'Y'로 업데이트 해야되는데...
300초 넘어가서 끊었네요..ㅡㅡ
같은날 작업을 할수도있으니 REG_DATE를 보면 안될거같습니다.
dntcall테이블은 암호화테이블입니다.(damo) 시간을 줄일수있는 방법이 있을까요.