[A] - 100만건
[B] - 1억건
요구사항 : [B]테이블에 존재하는 [A] 의 'col1' 을 구하는 쿼리입니다....
select a.col1
from A
exists ( select 'x' from B where B.key = A.key)
인덱스가 완벽히 구성되어있어, 테이블 랜덤액세스는 전혀 발생이 되지 않습니다....
다만 [A] 의 100만건을 B테이블의 인덱스로 100만번 찾아 들어간다는 비효율(?) 이 발생할것 같습니다....
질문1>이것이 과연 비효율인가요???
(인덱스만 이용했으니 테이블 랜덤 액세스 전혀 없이....인덱스 랜덤 액세스(??) 너무 많이 일어난다?????이런게 존재하는지 모르겠지만 ...)
질문2>비효율이라면....
이럴 경우 1억건의 데이터를 먼저 멀티 블락으로 INDEX FAST FULL SCAN 하고 key로 그룹바이 한다음 조인을 hash 조인을 하는게 제일 좋은 방법인까요?
select /*+ index_ffs(~~) use_hash(작은테이블)*/ A.col1
from A,
(
select /*+no_unnest index_ffs(~~) */ B.key from B
group by b.key
) BB
where A.key = BB.key
질문3> 다른 좋은 방법이 있는지.....