SQL(MySQL)

인덱스의 내부 작동 원리와 구조 & 데이터 검색하기

느리지만 꾸준하게 2022. 4. 12. 04:17

노드 하나에 데이터가 4개 들어가는 것으로 표현을 했다. 

 

밑에 그림은 루트 페이지 없이 리프 페이지만을 나타내었다.(인덱스가 없는 상태)

FULL TABLE SCAN 굉장히 좋지않다. 데이터 한개를 찾기위해서 3페이지를 다 찾았다.

100만 페이지 짜리면? 100만페이지를 다 찾아야 한다.

(느리게 찾느냐)

 

 

 

페이지를 하나씩 찾으면서 데이터를 찾는데,  두페이지만 읽어서 찾게 된다.(빨리 찾느냐)

 

인덱스를 구성하면 SELECT는 빨라지나 INSERT UPDATE DELETE시 성능이 나빠질 수 있다.

아래를 보면 II를 넣기 위해서 JJJ를 아래로 한 칸 이동 했다.

 

이번에는 GGG를 넣어주는 작업을 하는데 III JJJ가 있는 페이지를 따로 생성을 해서 페이지가 하나 늘어나게 된다.

즉 느려지게 된다.

 

이번에 QQQ를 넣게되면 세 페이지나 분할이 생긴다.(페이지 분할이 생기기 때문이다.)

 

아래 코드를 실행시켜보자. 영어 사전처럼 mem_id 순으로 정렬이 된다.

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', '마마무');

SELECT * FROM cluster;

ALTER TABLE cluster
    ADD CONSTRAINT 
    PRIMARY KEY (mem_id);

SELECT * FROM cluster;

 

이번에는 보조인덱스를 UNIQUE를 이용해서 만들어 보자.

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', '마마무');

ALTER TABLE second
    ADD CONSTRAINT 
    UNIQUE (mem_id);

SELECT * FROM second;

 

 

 

클러스터형 인덱스는 영어사전이기 때문에 사전자체가 알파벳 순으로 되어있다.

내용 자체도 인덱스라고 생각하면 된다. (전체가 INDEX => 두 페이지를 검색해서 찾음 / 효율적)

 

 

보조인덱스는 아래와 같은 방법으로 찾게된다.(세 페이지를 검색해서 찾음)

 

 

 

 

 

 

<출처 한빛미디어: 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기> 

https://www.youtube.com/watch?v=vWTDuoSG-YQ&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=17