안녕하세요
제가 배달주소DB에서 데이터를 검색해서
오입력된 우편번호를 정정하는 프로그램을 개발하고 있는데요
데이터가 11만건 정도여서
update속도가 잘 안나오네요(현재 15분정도 소요 됩니다)
오라클 버젼은 11g입니다
table명 tb_sim_regi_info
구조는
regino vachar2(13) 등기번호
recevymd vachar2(8) 접수일자
zipcd vachar2(8) 우편번호
addr vachar2(100) 기본주소
dtailaddr vachar2(200) 상세주소
기본주소는 보통 동/면/읍까지 들어가고 상세주소에 나머지 주소가 들어갑니다
제가 쓰는 update 쿼리는 아래와 같습니다
update tb_sim_regi_info set zipcd = '252829' where addr like '%인제%' and replace(trim(addr),' ','')||replace(trim(dtailaddr),' ','') like '%사서함100%'
기본적으로 이렇게 쓰고 상황에 따라서 and, and not 추가 됩니다
update tb_sim_regi_info set zipcd = '252829' where addr like '%인제%' and replace(trim(addr),' ','')||replace(trim(dtailaddr),' ','') like '%사서함100%' and not replace(trim(addr ),' ','')||replace(trim(dtailaddr),' ','') like '%boq%'
update tb_sim_regi_info set zipcd = '252829' where addr like '%원주%' and replace(trim(addr),' ','')||replace(trim(dtailaddr),' ','') like '%문막읍%' and replace(trim(addr),' ','')||replace(trim(dtailaddr),' ','') like '%원문로412%'
이런 쿼리가 jdbc로 약 400개정도 돌아갑니다
보통 400개 처리하는데 15분정도 걸리는데
문제는 다 문자열이고 딱히 속도개선을 위한 방법이 떠오르지 않네요
좋은 방법이 있다면 알려주시면 감사하겠습니다
Comment 1
-
Terry
2016.08.16 11:24
쿼리 관련은 아니지만..혹시나 하기건 확인해보세요..
1. 웹언어 상에서 각각의 UPDATE 구문 (400건) 을 한건씩만 처리를 하는지? ( 총 400번 실행 및 COMMIT )
-> 맞다면?
--> 문자열 ( SQL UPDATE 구문 )을 합쳐서, 1쿼리로 실행 및 COMMIT 하여 수행시간 테스트
오라클은 사용안해봐서 모르지만..
일전 PHP 와 MSSQL 사용했을때
속도관련 이슈가 있어, 상기처럼 웹페이지 수정하였더니
처리시간이 많이 줄어들더군요..
참고만 하세요..
(정작 원하시는건 쿼리관련일듯한데.. 곁다리 짚는듯해서 죄송해유..ㅠ.ㅠ)