6. 정리
실행 계획은 DB가 쿼리를 어떻게 실행할지 보여 주는 설명서입니다. 예상 계획은 실행하지 않고, 실제 실행 통계는 실행해서 실제 행 수와 시간을 보여 줍니다.
Oracle 은 EXPLAIN PLAN FOR 와 DBMS_XPLAN.DISPLAY, 실제 통계는 GATHER_PLAN_STATISTICS 힌트와 DISPLAY_CURSOR 입니다. MySQL 은 EXPLAIN 과 EXPLAIN ANALYZE(8.0.18)이고 type, key, rows, Extra 를 봅니다.
MSSQL 은 SSMS 그래픽 계획, SET SHOWPLAN_TEXT ON, SET STATISTICS IO ON 을 씁니다.
주요 연산은 전체 읽기, 키 한 건, 인덱스 범위, 인덱스에서 테이블로 가는 왕복입니다. 인덱스 컬럼에 함수를 씌우면 찾아 들어가지 못하고, 인덱스 컬럼 정렬은 별도 정렬을 피합니다. 예상과 실제 행 수가 크게 다르면 통계를 의심하고, 비용 숫자는 DB 간에 비교하지 않습니다.
H2 의 EXPLAIN 은 인덱스 사용 여부를 확인하는 용도로만 씁니다.
다음 레슨은 조인 방식입니다. Nested Loops, Hash Join, Merge Join 이 언제 선택되고 계획에서 어떻게 보이는지 다룹니다.