실행 계획 읽기
한 줄을 세 덩어리로 나누면 EXPLAIN ANALYZE가 빨리 읽힌다
먼저 어떻게 찾는지를 보고, 다음에 옵티마이저의 예상 규모, 마지막으로 실제 실행 시간을 확인합니다.
Index Scan using idx_users_email on users (cost=0.42..8.44 rows=1 width=100)
Execution Time: 0.05 ms
1. 접근 방식
Index Scan은 인덱스를 따라 바로 찾는다는 뜻
idx_users_email 인덱스를 사용해 users 테이블의 후보 행을 좁힙니다. 전체를 훑는 것이 아니라 필요한 키 범위부터 접근한다는 점이 첫 번째 해석 포인트입니다.
2. 옵티마이저 추정치
cost, rows, width는 실행 전에 계산한 예상값
cost
시작 비용과 총 비용입니다. 절대 시간이 아니라 여러 계획을 비교하기 위한 상대 지표입니다.
rows
예상 반환 행 수입니다. 여기서는 1건을 찾을 것이라고 판단한 상태입니다.
width
한 행의 예상 크기입니다. 결과가 커질수록 메모리와 전송 부담도 함께 커질 수 있습니다.
3. 실제 측정
Execution Time은 실행 후에 얻는 진짜 시간
위 추정치는 계획 선택 근거이고, 0.05 ms는 실제로 끝난 시간입니다. 둘을 함께 보면 옵티마이저의 예상이 대체로 맞았는지 판단할 수 있습니다.
읽는 순서는 항상 같습니다. 무엇으로 읽었는가를 먼저 확인하고, 그다음 얼마나 읽을 것이라 예상했는가, 마지막에 실제로 얼마나 걸렸는가를 봅니다.