핵심 메시지

SQL 속도는 문장 자체보다 통계가 만든 실행 계획에서 갈립니다.

옵티마이저는 현재 통계를 바탕으로 접근 경로와 조인 방식을 고르고, 개발자는 EXPLAIN으로 그 판단이 맞았는지 검증해야 합니다.

데이터 양 변화
인덱스 구성 변화
통계 정확도 변화
단계 1
입력 SQL
무엇이 일어나나

문법·권한을 확인하고, 가능하면 쿼리 변환과 바인드 재사용까지 반영해 실행 가능한 형태로 정리합니다.

왜 중요한가

같은 SQL이라도 재사용 여부와 초기 해석 비용이 달라져 이후 계획 선택의 출발점이 달라집니다.

단계 2
옵티마이저
무엇을 고르나

통계를 읽고 접근 경로, 조인 순서, 조인 방식을 선택해 가장 낮은 비용의 계획을 만듭니다.

왜 중요한가

실제 성능 차이의 대부분은 여기서 발생합니다. SQL 문법보다 어떤 경로로 읽는지가 더 크게 작용합니다.

단계 3
EXPLAIN
무엇을 확인하나

cost, rows, actual rows, execution time을 비교해 추정과 실제가 얼마나 맞는지 확인합니다.

예시
est rows 12
actual rows 540
왜 중요한가

차이가 크면 통계가 오래됐거나 선택도 추정이 틀렸을 가능성이 큽니다. 이때 인덱스와 통계를 다시 점검합니다.