* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Windows 10 64bit |
|
CUBRID 9.3 (9.3.9.0002) |
|
SQLGate for CUBRID Developer 9.17.1.0 |
|
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
귀사가 제공한 정기교육 파일(CUBRID_정기교육.pdf)에서 "질의 튜닝" 부분을 보고 있습니다.
그 중 "스칼라 쿼리 Outer join" 부분이 이해가 되지 않아 문의를 드립니다.
위 튜닝 전 쿼리는 메인 쿼리에서 반환되는 개수만큼(8,633)만큼 스칼라 서브쿼리가 수행되는 쿼리이며 비용은 46 입니다.
이 쿼리를 Outer 조인으로 바꾼 결과가 아래인데, 비용을 보면 305입니다.
튜닝 내용 설명을 보면 메인 쿼리에서 반환되는 결과 건수가 많은 경우는 호출 횟수를 줄이도록,
스칼라 서브쿼리보다 outer join을 사용하여 성능을 개선할 수 있다고 나와 있습니다.
근데 오히려 비용은 outer join으로 수행 시 더 높게 나오는데 이해가 되지 않습니다.
비용이 낮은 플랜을 고르는게 맞지 않나요?
아니면 쿼리 수행 시간으로 판단하는게 맞나요?
스칼라 서브쿼리는 실행 시 0.8 이상 나오고, outer join은 0.5~0.6초 정도 나오네요..