고수님들 도와주세요~
이메일 DB테이블에서 검색시 속도가 너무느려서 요렇게 질문드립니다.
EMAIL이라는 테이블에 당연히 PK(EMAIL_NO)가 존재를 합니다. PK가 존재하지만 Sequence가 고유하게
만들어 지는것이 아닙니다. 예를들어 15번 Tuple이 삭제된 후 그 다음에 들어오는 Tuple이 고유하게
16번이 생성되는것이 아니라 다시 15번이 됩니다. 그래서 PK가 있어도 검색시 PK로 검색을 못하는
이유중에 하나입니다. 그래서 PK컬럼 대신에 레코들을 구별할 수 있는 컬럼이 STR_EMAILDATE 라는
컬럼을 사용중입니다. 해당컬럼은 년,월,일,시,분,초까지 저장되는 컬럼이구요!!
해당 컬럼으로 30만건이 넘은 레코들을 검색을 합니다. 그래서 당연히 늦는거구요~~ 그래서 어제 위의
컬럼에 인덱스를 만들었는데 속도가 잘 나오더군요. 긍데 문제는 DB에 Transaction될때 엄청 느리다는
점입니다. 검색 속도를 높이자니 인덱스를 만들어야겠고, 또 DB에 넣자니 엄청 느리고~~ 이래두 저래두
같은상황입니다. 제발 좀 도와주십시오~~ 사용하는 DB구조는 아래와 같습니다.
EMAIL_NO SYSEMAIL_NO EMAIL_CLASS STR_EMAILDATE
--------------------------------------------------------------------------------------------------
662927 1 _r_Request 20111206143121
--------------------------------------------------------------------------------------------------
위의 구조처럼 되어있으며, 검색시 사용하는 컬럼들 입니다.
select 'Y'
from maildb.email
where email_class like '_r_%'
and sysemail_no = '1'
and str_emaildate = '20111206143121';
위 쿼리를 사용하는데 30만건이 넘은 데이터중 해당 레코드를 찾으려니 오래걸리네요!!
부탁드리겠습니다. |