UPDATE A
SET
A.CD1 = B.CD1
,A.CD2 = B.CD2
,A.CD3 = B.CD3
FROM TABLE1 A
INNER JOIN TABLE2 B
ON A.SUB_ID = B.SUB_ID
WHERE A.CD1 = 'AAA'
AND A.CD2 = 'BBB'
AND A.CD3 = 'CCC'
AND A.DATE >= '20160101000000';
우선 데이터베이스는 DB2입니다.
TABLE1의 CD1 = 'AAA', CD2 = 'BBB', CD3 = 'CCC'인 컬럼 값을
TABLE2의 CD1, CD2, CD3 컬럼 값으로 UPDATE 하고 싶습니다.
근데 문제는 TABLE1과 TABLE2의 데이터 건수가 각각 천만건 가까이 됩니다.
상기 쿼리로 돌렸을 경우, 이슈가 발생할 가능성이 있나요?
시간이 너무 오래 걸린다면, 어떤 방법으로 UPDATE를 해야 할까요?
도움 좀 부탁드립니다.
감사합니다.
업데이트 대상을 검색하는 조건에 대한 인덱스
- table1 a(cd1, cd2, cd3, date) -- 기본
- table1 a(cd1, cd2, cd3, date, sub_id) -- 확장
참조 대상을 조인할 때 필요한 인덱스
- table2 b(sub_id) -- 기본
- table2 b(sub_id, cd1, cd2, cd3) -- 확장
위에 적은 기본은 반드시 있어야 하는 것이고
위 업데이트 문에서는 확장을 쓰면 더 좋긴 합니다만.
다른데서 사용되는 여러 쿼리들에 미치는 영향도나
인덱스 사이즈 증가에 따른 문재점 등을 고려하여 검토해야 합니다.
사실 천만건 테이블에 인덱스 거는 작업도 만만치 않은 작업입니다.