SQL Inside

관계 대수는 SQL 실행 계획을 읽는 내부 언어입니다.

SQL은 원하는 결과를 선언하지만, DBMS 내부에서는 관계 대수에 가까운 논리 계획으로 바뀌고 여러 등가 변환을 거쳐 물리 실행 계획이 됩니다.

SELECT s.이름
FROM 학생 s JOIN 수강 e ON s.학번 = e.학번
WHERE s.학과 = '컴퓨터'

논리적으로는 π이름(σ학과='컴퓨터'(학생) ⋈학번 수강) 흐름으로 읽을 수 있습니다.

1 SQL 작성

사용자는 결과 조건과 필요한 열을 선언합니다.

2 논리 계획

선택 σ, 투영 π, 조인 ⋈ 같은 연산 트리로 해석됩니다.

3 등가 변환

필터 푸시다운, 투영 푸시다운, 조인 순서 변경을 적용합니다.

4 실행 계획

통계로 추정한 비용이 낮은 접근 경로와 조인 방식을 선택합니다.

WHERE
σ 선택행을 줄임

선택도가 높으면 테이블 접근 단계 가까이로 내려갑니다.

SELECT 컬럼
π 투영열을 줄임

필요 열과 조인 키만 남겨 중간 결과 폭을 줄입니다.

JOIN
⋈ 조인행을 결합

학생.학번 = 수강.학번 조건을 기준으로 순서와 물리 방식이 비용을 바꿉니다.

EXPLAIN을 읽는 감각: 필터가 왜 먼저 내려갔는지, 조인 순서가 왜 바뀌었는지, 어떤 인덱스가 선택됐는지를 관계 대수 관점으로 설명할 수 있습니다.