select *
from 사원 a, 직업 b
where a.고용일자 = '20250423'
and a.직업ID = b.직업ID
and b.직업구분 = 'A'
and b.최고연봉 >= 1500
인덱스 구성
직업_PK(직업ID)
직업_X01(직업구분)
직업_X02(최고연봉)
사원_PK(사원ID)
사원_X01(직업ID)
사원_X02(고용일자)
직업 테이블 b를 먼저 읽어서 a에 조인할 때
선택될 가능성이 가장 낮은 인덱스 조합은?
1. 직업_X01(직업구분) + 사원_X01(직업ID)
2. 직업_X02(최고연봉) + 사원_X01(직업ID)
3. 직업_X01(직업구분) + 사원_X02(고용일자)
4. 직업_PK(직업ID) + 사원_X01(직업ID)
중요한건 고용일자, 연봉, 직업구분인거 같은데 pk만으로 인덱스 하는게 제일 비효율적일듯? 4번
4 - dc App
nl join 이 유리한 속성의 데이터는 아닌거같은데 - dc App
가장 낮은건 모르겠고 평범하게 생각하면 둘다 풀스캔하고 hash join 둘다 데이터량이 유의미하게 많다하면 a.사원_x02 + b.직업_PK 로 풀릴꺼같음 - dc App
음.. NL조인으로 한다고 알려줬어야됐네
내역 속성의 테이블로 예시를 드는게 좋음 - dc App
통계를 생각하지않고 풀라고 가능성이 가장 낮은거 선택하라고 한거임
3
b를 먼저 읽으면 직업_PK(ID)는 못쓰는거 아님? 다른 인덱스 없으면 다 읽고 필터링해야하는데