안녕하세요?
감히 감이 안잡히는 문제를 조언을 듣고자 하여 조심스럽게 선배님들께 조언을 구합니다.
데이터가 4천만건 가량이 들어가있는 테이블이 있습니다.
테이블 구조는 가상으로 다음과 같습니다.
test_table
order_id varchar(13)
order_div varchar(1)
order_type varchar(1)
데이터가
order_div = 'A'이고 order_type = '1'인걸로 천만건
order_div = 'A'이고 order_type = '2'인걸로 천만건
order_div = 'B'이고 order_type = '1'인걸로 천만건
order_div = 'B'이고 order_type = '2'인걸로 천만건
합쳐서 4천만건가량이 존재합니다.
그런데 이중에 특정 조건에 따라 천만건중에 TOP 1을 채번해와야 하는 경우인데
첫번째 'A' 구분 '1' 타입은 정렬이 이미 최상단에 위치하고 있어 채번시
시간소요가 약 0.1초가량 밖에 걸리지 않는데
'B' 구분의 '1' 타입을 검색하면 3초 이상이 소요됩니다.
쿼리는 간단하게
select top 1 order_id test_table
where order_div = 'A'
and order_type='1'
[약 0.1초 소요]
select top 1 order_id test_table
where order_div = 'B'
and order_type='1'
[약 2.3초 소요]
게시판을 보며 인덱싱을 해보아도 2초 이내로 쿼리가 되지 않아
다량 처리시 시간소요가 너무나도 오래걸리고 있습니다.
어떻게 해결하는것이 좋을지 선배님들의 조언을 부탁드리겠습니다 (__)
항상 행복한 하루 되세요!
|