SQL은 바로 실행되지 않고 관계 대수 형태로 바뀐 뒤, 같은 결과를 내는 더 싼 표현식으로 다듬어집니다. 그래서 실행 계획은 관계 대수 규칙의 흔적을 그대로 보여줍니다.
1. 입력
사용자는 조회 조건과 조인을 SQL로 적지만, 옵티마이저는 이 질의를 내부적으로 분석 가능한 형태로 먼저 바꿉니다.
중심 개념
선택, 조인, 투영 같은 연산 단위로 쪼개 놓아야 어떤 순서를 바꿔도 의미가 같은지, 어디서 비용이 줄어드는지 판단할 수 있습니다.
π(이름)( σ(학과='컴퓨터')(학생) ⋈ 수강 )
3. 후보 생성
변환된 관계 대수식에서 조인 순서와 연산 위치를 바꾼 후보들을 만들고, 그중 비용이 가장 낮은 계획을 고릅니다.
2. 규칙 적용
학과='컴퓨터'처럼 한 릴레이션에만 걸리는 조건은 조인 뒤가 아니라 조인 전에 적용해도 결과가 같습니다.
4. 해석
실행 계획에서 필터가 조인 아래로 내려가 있으면, 옵티마이저가 중간 결과를 줄이기 위해 push-down을 택했다는 뜻으로 읽을 수 있습니다.