안녕하세요.
나름대로 찾아봤는데 답을 얻지 못해 질문드립니다.
A테이블의
varchar2 타입의 a컬럼과
B테이블의
number타입의 b컬럼을가지고
select A.*
from A A
inner join B B
on A.a =B.b
와 같은 조인문이 있을때
select 절에 A.a만 조회하면
Hash join을 수행하며
조회가되는데
select 절에 A.* 을 조회하면
nested loop join을 수행하며
에러가 발생합니다.
테이블A의 a 컬럼에는
문자형 숫자도 있고
문자형 문자도 있어
hash join시에도 오류가 날것이라 생각했는데 정상수행이 되는 이유가 궁금합니다.
제가 추측하기로는
hash join을 위해 A테이블이나 B테이블중
데이터량이 적은 테이블을 해싱처리하면서
해시테이블을 만들면서 해시테이블에 저장되는 값.
즉, a컬럼이나 b 컬럼의
데이터 형이 뭔가 달라지는건가 싶기도 한데 그부분이 이해가 가지않습니다.
도움을 요청드립니다.
감사합니다.