Selection Push-Down

선택 조건을 조인 전에 적용하면 큰 중간 결과를 만들지 않습니다.

조건이 학생 릴레이션 속성만 참조한다면, 조인 결과에서 거르지 않고 학생을 먼저 줄인 뒤 조인해도 의미가 같습니다.

σ학과='컴퓨터'(학생 ⋈ 수강)
≡ σ학과='컴퓨터'(학생) ⋈ 수강

조건이 한쪽 릴레이션에만 걸릴 때 안전하게 밀어 넣을 수 있습니다.

적용 가능

학생.학과='컴퓨터'처럼 학생 속성만 참조하는 조건입니다.

효과

조인 입력 튜플 수가 줄어 조인 비용과 메모리 사용량이 함께 낮아집니다.

주의

양쪽 속성을 함께 비교하는 조인 조건은 한쪽으로만 밀어 넣을 수 없습니다.

늦게 거르는 경로

먼저 크게 조인하고, 나중에 필요 없는 행을 버립니다.

1. 조인 학생 전체 ⋈ 수강 큼
2. 중간 타 학과 수강 기록까지 포함 불필요
3. 선택 학과='컴퓨터'만 마지막에 필터 결과

먼저 줄이는 경로

필터링된 학생만 수강과 조인하므로 처리할 입력이 작습니다.

1. 선택 학생 중 컴퓨터학과만 남김 10,000→300
2. 조인 작아진 학생 집합 ⋈ 수강 가벼움
3. 결과 늦게 거른 경로와 같은 결과 동일

옵티마이저 감각: 선택도가 높은 조건을 가능한 한 데이터 원천 가까이에서 실행해 조인할 행 수를 줄입니다.