SELECT p.name, c.name
FROM products p JOIN categories c
ON p.category_id = c.id
WHERE p.price > 500000;
SQL 실행은 문법 확인, 의미 분석과 바인딩, 비용 기반 최적화, 실행 엔진 호출로 이어집니다. 파서가 모든 오류를 혼자 잡는 것이 아니라 카탈로그와 통계 정보를 참조하는 분석 단계가 함께 작동합니다.
SELECT p.name, c.name
FROM products p JOIN categories c
ON p.category_id = c.id
WHERE p.price > 500000;
문장을 토큰과 트리 구조로 만들고 기본 문법을 확인한다.
카탈로그를 보고 테이블, 컬럼, 타입, 권한을 확인한다.
통계 기반으로 인덱스, 조인 순서, 접근 방법을 비교한다.
저장 시스템, 버퍼, 인덱스와 협력해 결과 행을 만든다.
SELECT, FROM, JOIN, WHERE의 관계가 내부 노드로 표현된다.
어떤 테이블을 먼저 읽고 어떤 인덱스를 쓸지 정리한다.
실행 엔진이 필터링, 조인, 정렬을 수행해 사용자에게 돌려준다.
순수 문법 확인과 객체 존재 확인은 개념적으로 나누어 보는 편이 정확하다.
통계가 오래되거나 데이터 분포가 치우치면 실제 최적과 다를 수 있다.
이 단계에서 버퍼 접근, 인덱스 탐색, 페이지 읽기가 실제로 일어난다.