Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

DBDBDEEP

2.1.5 결합 인덱스 구조와 탐색 본문

친절한 SQL 튜닝

2.1.5 결합 인덱스 구조와 탐색

Kihwane 2026. 5. 16. 20:03

 

 

인덱스 컬럼 순서 [고객명 + 성별] 순으로 구성한 인덱스일 , 인덱스를 스캔하는 방법은??

 

인덱스를 [고객명+성별] 구성하던, [성별 + 고객명] 으로 구성하던 읽는 인덱스 블록 개수는 똑같다는 사실이 있다.

 

인덱스 선두 컬럼을 모두 '=' 조건으로 검색할 때는 어느 컬럼을 인덱스 앞쪽에 두든 블록 I/O 개수가 같으므로 성능도 똑같게 된다.

----------------------------------------------------------------------------------------------------------------

SELECT 이름, 성별

FROM 사원

WHERE 성별='여자'

AND 이름='유관순'

 

해당 예제에서 (성별, 이름) 인덱스를 사용하는 것과 (이름, 성별) 인덱스를 사용했을 때의 성능이 다른가?

 

DBMS 사용하는 B*Tree 인덱스는 엑셀처럼 평면 구조가 아니다. 다단계 구조이다.

루트에서 브랜치를 거쳐 리프 블록까지 탐색하면서 '여자' 이면서 '유관순' 첫번째 사원을 바로 찾아간다.

거기서 부터 2건을 스캔한다. (정확히 말하면 유관순이 안나올 때까지 One Plus 하여 세건을 스캔한다)

 

인덱스 선두컬럼 먼저 보고 나서 두번째 컬럼으로 들어가는 구조가 아니라,
'
여자' 이면서 '유관순' 것을 바로 검사하는 방법을 사용하는 같다.

'친절한 SQL 튜닝' 카테고리의 다른 글

2.2.3 인덱스 사용 조건  (0) 2026.05.16
OR Expansion  (0) 2026.05.16
2.1.3 인덱스 수직/수평적 탐색  (0) 2026.05.16
1.3.6 Single Block,Multi Block I/O  (0) 2026.05.16
[친절한 SQL] 1.3.5 논리적 I/O vs 물리적 I/O  (0) 2026.05.11