데이터베이스는 같은 SQL에서도 왜 읽는 순서를 고를까? 쿼리 실행 계획
SQL은 원하는 결과를 말한다. status = 'ready'인 행을 달라고 할 뿐, 테이블을 처음부터 읽을지 인덱스로 찾을지, 두 테이블 중 어디부터 읽을지는 지정하지 않는 경우가 많다. 데이터베이스는 가능한 경로의 비용을 예상하고 실제 실행 순서를 고른다. 이것이 쿼리 실행 계획이다.실행 계획을 이해하면 “인덱스가 있는데 왜 느릴까”라는 질문을 더 정확하게 바꿀 수 있다. 데이터베이스가 몇 행을 찾을 것으로 예상했고, 실제로는 얼마나 읽었으며, 어느 단계에서 작업량이 크게 늘었는지를 확인하게 된다.같은 결과를 만드는 읽기 방법은 여러 개다백만 행에서 status = 'ready'를 찾는다고 하자. 데이터베이스에는 적어도 두 경로가 있다.경로 A: 테이블 전체를 차례로 읽고 status를 확인경로 B:..