왜 배우는가

관계 대수를 알면 옵티마이저의 선택이 설명된다

SQL은 바로 실행되지 않고 관계 대수 형태로 바뀐 뒤, 같은 결과를 내는 더 싼 표현식으로 다듬어집니다. 그래서 실행 계획은 관계 대수 규칙의 흔적을 그대로 보여줍니다.

1. 입력

우리가 쓰는 것은 SQL

사용자는 조회 조건과 조인을 SQL로 적지만, 옵티마이저는 이 질의를 내부적으로 분석 가능한 형태로 먼저 바꿉니다.

중심 개념

관계 대수는 옵티마이저의 작업 언어

선택, 조인, 투영 같은 연산 단위로 쪼개 놓아야 어떤 순서를 바꿔도 의미가 같은지, 어디서 비용이 줄어드는지 판단할 수 있습니다.

π(이름)(
  σ(학과='컴퓨터')(학생) ⋈ 수강
)
같은 의미 결과 집합은 유지
→
더 작은 중간 결과 조인 전에 행 수 감소

3. 후보 생성

여러 실행 계획을 비교한다

변환된 관계 대수식에서 조인 순서와 연산 위치를 바꾼 후보들을 만들고, 그중 비용이 가장 낮은 계획을 고릅니다.

2. 규칙 적용

선택을 먼저 내려보낸다

학과='컴퓨터'처럼 한 릴레이션에만 걸리는 조건은 조인 뒤가 아니라 조인 전에 적용해도 결과가 같습니다.

선택 먼저 조인 입력 감소 비용 절감

4. 해석

EXPLAIN이 낯설지 않아진다

실행 계획에서 필터가 조인 아래로 내려가 있으면, 옵티마이저가 중간 결과를 줄이기 위해 push-down을 택했다는 뜻으로 읽을 수 있습니다.

핵심: 관계 대수는 문법 이론이 아니라, 왜 DBMS가 그 순서로 읽고 걸러서 조인하는지를 설명해 주는 틀입니다. 그래서 관계 대수를 알면 실행 계획의 선택이 납득됩니다.