IN 쿼리 사용시 질의실행계획 비용 관련

by 종이 posted Apr 07, 2015

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window 2008 64bit
CUBRID Ver.
 CUBRID 9.3 (9.3.0.0206) (64bit release build for Windows_NT) (May 14 2014 23:34:10)
CUBRID TOOL Ver.
 CUBRID 매니저 2014.03 빌드 0458  (64bit)
응용 환경(API)
java

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

안녕하세요.


IN 쿼리 사용중 궁금한점이 있어 문의드립니다.


table_A 테이블은 마스터 테이블에 딸린 1-N 테이블 입니다.


아래의 쿼리는 계약건에 딸린 계산서 테이블 자료중 마지막 처리건의 상태값을 조회하기 위한 쿼리입니다.



SELECT pubdate
FROM table_A
WHERE serialnum IN ('100001-T20131203-1521')



SELECT pubdate
FROM table_A
WHERE table_A IN (SELECT MAX(serialnum) FROM table_A WHERE contract_key = 7135)



첫번째 쿼리와 두번째 쿼리는 같은 데이터를 리턴하고,   serialnum  열이 인덱스를 정상적으로 타고 있습니다.


문제는 두번째 쿼리가 비용이 첫번째 쿼리보다 수백배는 많이 듭니다.


100건 정도 자료를 조회를 할 경우 기존에 MSSQL에서는 운영시에는 1초 이내에 나오던 결과값이 3초 정도 걸려서 조회가 됩니다.


잘못된 방법으로 쿼리를 사용하는것인지, 다른 조회 방법이 있는지 확인 부탁드립니다.



감사합니다.


Articles