4편에서 인덱스의 내부 구조를 기준으로 왜 읽기는 빠르고 쓰기는 느릴 수밖에 없는지 살펴봤다.이제 실무에서 가장 자주 나오는 질문으로 넘어가 보자.“인덱스도 있는데, 왜 실행 계획이 풀스캔을 선택했지?”이 상황에서 흔히 이런 결론에 도달한다.“옵티마이저가 잘못 판단했다.”반은 맞고, 반은 틀리다. 실행 계획을 이해하려면, 먼저 옵티마이저가 무엇을 할 수 있고, 무엇을 할 수 없는지를 정확히 알아야 한다.MySQL 옵티마이저의 역할MySQL 옵티마이저는 SQL을 실행하기 전에 가능한 여러 실행 방법을 비교한다.그리고 그중에서 비용(cost)이 가장 낮다고 추정되는 계획을 선택한다.중요한 점은, 이 비용이 실제 비용이 아니라 추정 비용라는 것이다.옵티마이저는 무엇을 보고 판단할까옵티마이저는 다음 정보를 기반..