SELECT * FROM users WHERE gender = 'M';
| 비교 축 |
고정 규칙
RBO
인덱스가 있으면 우선 사용 같은 미리 정한 우선순위
|
통계 기반
CBO
선택도와 I/O 비용을 보고 그 순간 더 싼 계획 선택
|
|---|---|---|
| 무엇을 보나 | 인덱스 존재 여부 데이터가 절반이나 걸려도 규칙은 그대로라서 분포 변화를 반영하지 못합니다. | 선택도와 예상 읽기량 50%를 읽어야 한다면 인덱스보다 전체 스캔이 더 낫다고 계산할 수 있습니다. |
| 선택된 계획 | 인덱스 스캔 고집 조건에 맞는 50만 건을 찾고, 각 행을 다시 따라가며 읽습니다. | Full Table Scan 선택 가능 테이블을 순차적으로 훑으면서 필요한 행을 한 번에 읽습니다. |
| 왜 문제가 되나 | 랜덤 I/O가 커짐 읽는 행 수가 많아질수록 인덱스의 장점이 사라지고, 오히려 비효율 계획이 됩니다. | 데이터 상태에 맞게 적응 같은 SQL이어도 분포가 바뀌면 더 낮은 비용의 실행 계획으로 바꿀 수 있습니다. |