해시 인덱스는 특정 키 값(예: id = 123
)을 해시 함수(Hash Function) 에 넣어서 특정 위치(버킷, bucket)를 찾아가는 방식이야.
즉, 키 값을 직접 계산해서 데이터가 있는 위치를 빠르게 찾아가는 구조지.
📌 예제
만약 id
컬럼에 해시 인덱스를 만들었다고 하면,
id = 123
이라는 값을 찾을 때, 해시 함수가 123
을 특정 버킷 번호로 변환함.비교 요소 | 해시 인덱스 | B-Tree 인덱스 (클러스터링, 논클러스터링) |
---|---|---|
검색 속도 | O(1) (거의 즉시 찾음) | O(log N) (트리 탐색) |
범위 검색 (BETWEEN , ORDER BY ) |
❌ 비효율적 | ⭕ 효율적 |
등가 검색 (= ) |
⭕ 매우 빠름 | ⭕ 빠름 |
LIKE 검색 (WHERE name LIKE 'A%' ) |
❌ 불가능 | ⭕ 가능 |
정렬된 데이터 유지 | ❌ 정렬 안 됨 | ⭕ 정렬된 상태 유지 |
사용 예시 | 정확한 키 값 조회 (WHERE id = 123 ) |
범위 조회, 정렬, 다중 조건 검색 |
📌 즉, 해시 인덱스는 이런 경우에 적합해!
id = 123
)sql
복사편집
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
➡ B-Tree
인덱스는 나이 기준으로 정렬되어 있어서 범위 검색이 빠름