update 고객테이블 set
주문수 = (select count(*) from 주문서테이블 where 번호=@고객번호),
미수금액건수 = ( select count(*) from 주문서테이블 where 번호=@고객번호 and 미수금액 > 0),
미수금액건수2 = ( select count(*) from 주문서테이블 where 번호=@고객번호 and 미수금액2 > 0),
미수금액건수3 = ( select count(*) from 주문서테이블 where 번호=@고객번호 and 미수금액3 > 0),
미수금액건수4 = ( select count(*) from 주문서테이블 where 번호=@고객번호 and 미수금액4> 0),
미수금액건수5 = ( select count(*) from 주문서테이블 where 번호=@고객번호 and 미수금액5 > 0)
where 고객번호 > 5000000
위와 같이 고객테이블을 업데이트하는것인데...
여기서 업데이트할 고객수가 2000건이지만 주문서 테이블의 수량이 5백만건이 넘어갈시에
어마어마한 시간의 락이 걸릴것이 예상되는데,
이거 락이 걸리지 않아야 한다면 느려도 커서로 가야 하는게 맞을까요?
고객수 2000여명 정도면 그렇게 오래 걸리지 않을것 같은데요..
서브 쿼리 부분인데 고객번호 , 미수컬럼으로 인덱스만 잡아 있으면 많은 시간이 안걸릴듯 합니다.
정 뭐하시면
고객별 미수금액컬럼별 건수를 미리 임시 테이블로 만들어 놓으신 다음
고객테이블과 조인해서 업데이트 하시면 금방 될듯 합니다 .