database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39125 게시물 읽기
No. 39125
update 문 튜닝좀 부탁드립니다.
작성자
박주영(vf19)
작성일
2011-11-25 18:13
조회수
4,702

 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에 인덱스를 걸었구요.
몇일동안 이것때문에 다른일은 하지도 못했네요. 도움이 절실히 필요합니다.  
이 글에 대한 댓글이 총 2건 있습니다.

프로젝트ID 조건이 서브쿼리 안에 있네요?

메인쿼리에 들어갈 조건이 서브쿼리에 들어가 있네요.

조건절 위치를 바꿔 보세요.

마농(manon94)님이 2011-11-27 23:57에 작성한 댓글입니다.
이 댓글은 2011-11-27 23:57에 마지막으로 수정되었습니다.

 일단 데이터를 만드는게 급해서 오래걸리더라도 

데이터는 만들었습니다. 마농님이 말씀해 주신대로

쿼리 다시 수정해서 돌려봐야겠군요. 친절한 답변 감사합니다. ^^

박주영(vf19)님이 2011-11-28 18:10에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39128Oracle 10g ==> DB2간에 서로 Interface를 할수있나요?
이주완
2011-11-25
3310
39127cmd창에서 sqlplus를 실행해서 데이터를 백업받을수 있나요???? [1]
정명규
2011-11-25
3985
39126날짜계산 특정기간동안 1개월씩 증가[도와주세요] [2]
정현숙
2011-11-25
4366
39125update 문 튜닝좀 부탁드립니다. [2]
박주영
2011-11-25
4702
39124날자 관련 하여 질문 드립니다. 정말 모르겠네요 [2]
호동이네남일이
2011-11-24
3711
39122메뉴 구조에서 시작과 종료를 확인 [2]
김주환
2011-11-24
4675
39121rollup에 총계대신 소계값중 max값을 출력하고 싶습니다. [2]
문성환
2011-11-24
5101
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다