* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit | |
10.2 | |
10.2 |
|
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
큐브리드 인덱스 스캔이 궁금합니다.
id값은 index잡혀있습니다
1. select * from test a left outer join (select * from test2) b on a.id=b.id -> 인덱스 스캔함
2. select * from test a left outer join (select id,name from test2 ) b on a.id=b.id -> 인덱스 스캔안함
3. select * from test a left outer join test2 b on a.id=b.id -> 인덱스 스캔함
4. select * from test a left outer join (select * from test2 where code = '02') b on a.id=b.id -> 인덱스 스캔안함
실행계획을 보면 2,4 번은 id 인덱스를 안타고 fullscan 합니다
1번의 경우는 DB 엔진에서 3번과 같이 재작성되었기 때문에 인덱스 스캔이 가능한 상황입니다.
이렇게 재작성하는 것을 view merging이라고 합니다.
CUBRID는 inline view에 대해서 1번과 같은 아주 단순한 질의에 대해 view merging을 진행합니다.
VIEW에 대해서는 제한적인 view merging을 지원합니다.
subquery를 사용하지 않아도 되는 상황이라면 3과 같이 쿼리를 작성하는 것이 성능에 도움이 될 것입니다.