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

87 88 89 90 91 92 93 94 95 96