혼자 공부하는 SQL 16강

랄라콥스·2025년 2월 24일

혼자공부하는SQL

목록 보기
8/12

클러스터형 인덱스와 보조 인덱스는 모두 균형 트리로 이루어져 있다.

인덱스의 내부 작동 원리

균형 트리 개념

데이터가 저장되는 공간: node
-> MySQL에서는 페이지라고 부름

인덱스가 없는 데이터 -> 처음부터 전체 다 찾아봐야함

MMM이라는 데이터를 찾기 위하여 페이지 3개를 검색해야함(SELECT시)
=> 전체 테이블 검사(Full Table Scan)

전체 테이블 검사는 효능에서 너무 최악임

그래서! 인덱스를 만드는 것임

루트 페이지를 추가
-> 리프 페이지 가장 상단의 데이터를 보관하고 있음

MMM을 찾기 위해 페이지 2개만 읽어서 결과를 얻을 수 있음!
=> 매우 빠른 것이다(데이터가 많은 상화에서)

인덱스가 있든 없든 결과는 같다!

균형 트리의 페이지 분할

INDEX는 SELECT는 빠름
그런데
INSERT, UPDATE, DELETE는 느림
=> 페이지 분할 떄문


페이지에 공간이 있을 때는 문제가 없음


이런식으로 자리가 없어서 페이지를 분할하는 경우
-> 느려짐 매우 많이


루트 페이지도 분할되는 경우(중간페이지 생성) 매우 느려짐

인덱스의 구조

둘 다 빠른데, 누가 더 빠른가를 보자

클러스터형 인덱스 구성하기


영어 사전처럼 페이지 구성이 됨

보조 인덱스 구성하기


데이터 페이지는 그대로고, 인덱스 페이지가 따로 생성된다
페이지 번호 + 순서

인덱스에서 데이터 검색하기

클러스터형 인덱스
모든 것이 다 인덱스
SPC 회원을 찾기 위해
루트 페이지 -> 리프페이지 => 2개의 페이지 검색

보조 인덱스
루트 페이지 -> 리프페이지 -> 데이터 페이지 => 3개의 페이지

두 인덱스 모두 검색이 빠르긴 하지만, 클러스터형 인덱스가 조금 더 빠르다.

profile
일단 책을 피자

0개의 댓글