클러스터링 인덱스는 테이블의 물리적 정렬을 결정하기 때문에 한 테이블에 하나만 생성 가능해.
그런데 현실에서는 하나의 테이블을 여러 기준으로 검색해야 하는 경우가 많아.
✅ 예를 들어, Employees
테이블이 있다고 해보자.
EmployeeID (PK) | Name | Department |
---|---|---|
101 | Alice | HR |
102 | Bob | IT |
103 | Charlie | IT |
104 | David | HR |
105 | Eve | Marketing |
EmployeeID
) 기준으로 정렬됨 → EmployeeID
로 검색하는 건 빠름SELECT * FROM Employees WHERE Name = 'Charlie';
클러스터링 인덱스는 EmployeeID
에만 걸려 있어서, Name
으로 검색하면 전체 테이블을 검색해야 함
➡ 논클러스터링 인덱스를 추가하면 검색이 훨씬 빨라져!
📌 논클러스터링 인덱스 추가
sql
복사편집
CREATE INDEX idx_name ON Employees (Name);
Name (정렬됨) | EmployeeID (원본 데이터 위치) |
---|---|
Alice | 101 |
Bob | 102 |
Charlie | 103 |
David | 104 |
Eve | 105 |
✅ SELECT * FROM Employees WHERE Name = 'Charlie';
실행하면?
1️⃣ idx_name
에서 Charlie
를 찾음
2️⃣ Charlie
의 EmployeeID = 103
을 가져옴