[SQL] - 인덱스의 내부 작동

2364 단어 인덱스sqlsql

1. 균형 트리의 개념

노드 : 데이터가 저장되는 공간
루트 노드 : 노드의 가장 상위 노드
리프 노드 : 제일 마지막에 존재하는 노드
중간 노드 : 루트, 리프 중간에 끼인 노드
페이지 : MySQL에서 부르는 노드

  • 균형 트리는 무조건 루트 페이지부터 검색한다.



2. 균형 트리의 페이지 분할

루트 노드에 자리가 없으면 루트 노드를 또 분할한다.
페이지 분할이 일어나면 MySQL에 부담이 커진다.



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

USE market_db;
CREATE TABLE cluster
(mem_id CHAR(8),
mem_name VARCHAR(10)
);

INSERT INTO cluster VALUES('TWC', '트와이스');
INSERT INTO cluster VALUES('BLK', '블랙핑크');
INSERT INTO cluster VALUES('WMN', '여자친구');
INSERT INTO cluster VALUES('OMY', '오마이걸');
INSERT INTO cluster VALUES('GRL', '소녀시대');
INSERT INTO cluster VALUES('ITZ', '잇지');
INSERT INTO cluster VALUES('RED', '레드벨벳');
INSERT INTO cluster VALUES('APN', '에이핑크');
INSERT INTO cluster VALUES('SPC', '우주소녀');
INSERT INTO cluster VALUES('MMU', '마마무');


입력 순서와 동일한 순서로 보인다

  • 클러스터형 인덱스 구성
ALTER TABLE cluster
ADD CONSTRAINT
PRIMARY KEY(mem_id);


오름차순 정렬



4. 보조 인덱스 구성하기

USE market_db;
CREATE TABLE second
(mem_id CHAR(8),
mem_name VARCHAR(10)
);

INSERT INTO second VALUES('TWC', '트와이스');
INSERT INTO second VALUES('BLK', '블랙핑크');
INSERT INTO second VALUES('WMN', '여자친구');
INSERT INTO second VALUES('OMY', '오마이걸');
INSERT INTO second VALUES('GRL', '소녀시대');
INSERT INTO second VALUES('ITZ', '잇지');
INSERT INTO second VALUES('RED', '레드벨벳');
INSERT INTO second VALUES('APN', '에이핑크');
INSERT INTO second VALUES('SPC', '우주소녀');
INSERT INTO second VALUES('MMU', '마마무');

SELECT * FROM SECOND;ALTER TABLE second
ADD CONSTRAINT
unique(mem_id);
SELECT * FROM second;


내부적으로는 보조 인덱스를 구성하면 인덱스가 별도의 공간에 만들어진다.



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

  • 클러스터형 또는 보조 인덱스를 이용해서 검색.
  • 속도는 인덱스를 사용하지 않았을 때보다 빠르다.

좋은 웹페이지 즐겨찾기