우편번호(ZIpPost)
========================
sido | gugun | dong | ucode
----------------------------------------
서울특별시 강남구 방배동 001001001
서울특별시 강남구 방배1동 001001002
서울특별시 강남구 방배2동 001001003
서울특별시 강동구 강일동 001002001
서울특별시 강동구 고덕동 001002002
회원테이블(Member)
===========================================
name | age | ucode
------------------------------------------------------------------------
AAA 12 001001002
BBBB 35 001001
CCC 25 001002002
SDD 47 001002
아래와 같이 회원주소를 표현을 할려고 합니다
이름 | 나이 | 주소
==============================
AAA 12 방배1동
BBBB 35 강남구
CCC 25 고덕동
SDD 47 강동구
쿼리를 아래와 같이 해봤습니다
select name, age , (select case when Len(A.Ucode) = 9 Then dong else gugun end
from ZipPost B where Left(B.UCode), Len(A.UCode)) = A.UCode) as 주소
From Member A ~~~~~~~~~~~~~~~~~~~~
이렇게 햇는데 조회 속도가 너무 늦어요
조인을 해봣는데도 속도는 비슷하네요
두테이블다 인덱스는 걸린 상태입니다
제가 쿼리를 잘못한거 같은데 빠르게 하는 방법좀 알려주세요
일단 ucode 가 우편번호(ZIpPost)에는 9자리로만 있고 회원테이블(Member)에는 3,6,9 로도 가능하게 되어 있어서
쿼리를 작성시 우편번호(ZIpPost)의 ucode를 가공하여 쿼리를 작성하여 인덱스를 타지않아서 늦을듯 합니다.
이경우는 우편번호(ZIpPost)에 시도 , 시도+군구 를 별도로 추가하시면 어떨지.
SELECT 절에 스칼라서브쿼리 보다는 조인 관걔로 하시는게...
회원수도 많고, 우편번호도 자료가 많으면 당연히 늦어 질듯 합니다.
COALESCE(dong,gugun,sido) 이용하시면 편합니다.
서울특별시 , NULL , NULL, 001
서울특별시 , 강남구 , NULL, 001001
서울특별시 , 강동구 , NULL, 001002