UPDATE PJT_기존경로내역 C
SET FROM_행정동_CODE =
(SELECT FN_행정동코드(B.X좌표,B.Y좌표)
FROM MV_노선정류장 B
WHERE SUBSTR(C.경로내역_SOURCE,10,11) = B.노선정류장ID
AND C.프로젝트ID = i_프로젝트ID
AND ROWNUM=1),
TO_행정동_CODE =
(SELECT FN_행정동코드(B.X좌표,B.Y좌표)
FROM MV_노선정류장 B
WHERE SUBSTR(C.경로내역_SOURCE,-11,11) = B.노선정류장ID
AND C.프로젝트ID = i_프로젝트ID
AND ROWNUM=1),
최초노선정류장ID =
(SELECT B.노선정류장ID
FROM MV_노선정류장 B
WHERE SUBSTR(C.경로내역_SOURCE,10,11) = B.노선정류장ID
AND C.프로젝트ID = i_프로젝트ID
AND ROWNUM=1),
최종노선정류장ID =
(SELECT B.노선정류장ID
FROM MV_노선정류장 B
WHERE SUBSTR(C.경로내역_SOURCE,-11,11) = B.노선정류장ID
AND C.프로젝트ID = i_프로젝트ID
AND ROWNUM=1),
최초정류장명 =
(SELECT B.정류장명
FROM MV_노선정류장 B
WHERE SUBSTR(C.경로내역_SOURCE,10,11) = B.노선정류장ID
AND C.프로젝트ID = i_프로젝트ID
AND ROWNUM=1),
최종정류장명 =
(SELECT B.정류장명
FROM MV_노선정류장 B
WHERE SUBSTR(C.경로내역_SOURCE,-11,11) = B.노선정류장ID
AND C.프로젝트ID = i_프로젝트ID
AND ROWNUM=1)
WHERE 프로젝트ID = i_프로젝트ID
기존 업데이트 쿼리문입니다. PJT_기존경로내역이라는 테이블에 적은 데이터가 있을떄는
상관없었는데 약 120만건에 데이터가 집어넣으니 업데이트문이 완성이 되지 않더군요.
그래서
UPDATE PJT_기존경로내역 PJ
SET (FROM_행정동_CODE, TO_행정동_CODE, 최초노선정류장ID, 최종노선정류장ID, 최초정류장명, 최종정류장명) =
(SELECT FN_행정동코드(SM.X좌표,SM.Y좌표),
FN_행정동코드(EM.X좌표,EM.Y좌표),
SM.노선정류장ID,
EM.노선정류장ID,
SM.정류장명,
EM.정류장명
FROM MV_노선정류장 SM,
MV_노선정류장 EM
WHERE SUBSTR(PJ.경로내역_SOURCE,10,11) = SM.노선정류장ID
AND SUBSTR(PJ.경로내역_SOURCE,-11,11) = EM.노선정류장ID
AND PJ.프로젝트ID = 'P20111116001')
WHERE EXISTS (SELECT /*+ unnest hash_sj */ 'X'
FROM MV_노선정류장 SM,
MV_노선정류장 EM
WHERE SUBSTR(PJ.경로내역_SOURCE,10,11) = SM.노선정류장ID
AND SUBSTR(PJ.경로내역_SOURCE,-11,11) = EM.노선정류장ID
AND PJ.프로젝트ID = 'P20111116001');
이렇게 수정을 했습니다만 이것 역시 속도가 나오지가 않습니다. ;;
기존경로내역에서 SUBSTR(PJ.경로내역_SOURCE,10,11) ,SUBSTR(PJ.경로내역_SOURCE,-11,11)
프로젝트ID에 인덱스를 걸었구요.
몇일동안 이것때문에 다른일은 하지도 못했네요. 도움이 절실히 필요합니다.
|