안녕하세요 요즘 DB 공부가 부족해서 DB공부중인데요
계약테이블 A 와 회사테이블 B이 있는데요
두테이블 사이에 comp_cd 라는 코드가 있습니다. 당연히 b테이블의 PK이고 인덱스도 생성되어있습니다.
그런데
select * from 계약테이블 a , 회사테이블 b where a.comp_cd = b.comp_cd and a.계약기간 between '20180101' and '20180401'
인 경우 a테이블이 드라이빙 테이블이 되지 못하는것인지 힌트를 주어도 인덱스를 타지못해서
b테이블을 풀테이블 스캔을 하고있습니다.
반대로
select a.계약기간, a.계약명, b.회사명 from 계약테이블 a , 회사테이블 b where a.comp_cd = b.comp_cd and a.계약기간 between '20180101' and '20180401'
로 쿼리를 변경하였을때에는 a테이블이 드라이빙 테이블이 되어서
b테이블을 인덱스를 타게되는데
* 가 무슨역할을 하는것이길레 조회시 실행계획을 변경시키는것인지 질문드립니다.
긴글 읽어주셔서 감사합니다.