같은 검색 요청
책에서 "트랜잭션" 찾기
질문은 같아도, 먼저 어디를 읽느냐에 따라 검색 비용이 크게 달라집니다.
데이터 규모
행 1,000만 건
책으로 치면 거의 전 페이지
비교 포인트
테이블 전체를 훑는가
아니면 위치부터 좁히는가
비교 기준
Full Table Scan
Index Scan
어디서 시작?
처음 행부터 끝까지 순차 읽기
1페이지부터 마지막 페이지까지 넘기듯이 조건을 하나씩 확인합니다.
인덱스에서 값 위치 확인 정렬 탐색
색인에서 "트랜잭션 ... p.245"를 찾듯 정렬된 인덱스를 먼저 봅니다.
무엇을 읽나?
원하는 값이 뒤쪽에 있으면 거의 전체 테이블을 읽게 됩니다.
인덱스의 값과 ROWID필요한 위치만 찾아갑니다.
왜 차이가 나나?
정렬된 길잡이가 없어서 범위를 줄이지 못한 채 계속 비교합니다.
값이 정렬돼 있어 탐색 범위를 빠르게 줄인 뒤 해당 행으로 바로 점프합니다.
1,000만 건이면?
체감 속도는 수십 초까지 늘어날 수 있습니다.
같은 검색도 수 밀리초 수준으로 끝날 수 있습니다.
핵심 이해
인덱스의 본질은 값을 정렬해 두고 그 값이 있는 행 위치를 함께 기억하는 것입니다. 그래서 검색할 때 테이블 전체를 뒤지지 않고, 필요한 범위와 행으로 바로 좁혀 들어갈 수 있습니다.