본문 바로가기
  • Coding & Book
학습단/SQL 학습단

혼공스 17일차(인덱스 내부 작동)

by 루이3 2023. 8. 9.

균형 트리

  • 균형트리는 나무를 거꾸로 표현한 자료 구조입니다.
  • 트리에서 상단의 뿌리를 루트, 줄기를 중단, 끝에 달린 잎을 리프라고 부릅니다.
  • 균형 트리 구조에서 데이터가 저장되는 공간을 노드라고 합니다.
  • 루트 노드는 노드의 가장 상위 노드이며 모든 출발이 이곳에서 시작됩니다.
  • 리프 노드는 제일 마지막에 존재하는 노드입니다.
  • 노드는 MySQL에서 페이지라고 부르며 최소한의 저장단위를 말합니다.(16 Kbyte)
  • 균형 트리는 데이터를 검색할 때 아주 뛰어난 성능을 발휘합니다.

 

균형 트리의 페이지 분할

  • 인덱스는 균형트리로 구성되어 있습니다.
  • SELECT의 속도를 향상할 수 있습니다.
  • 데이터 변경작업(INSERT, UPDATE, DELETE) 할시 성능이 나빠집니다.
  • 위 같은 이유는 페이지 분할 작업이 발생하기 때문입니다.
  • 페이지 분할은 새로운 페이지를 준비해서 데이터를 나누는 작업을 말합니다.

 

 

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

  • 클러스터형 인덱스 구조는 먼저 인덱스를 구성하기 위해 행 데이터를 지정한 열로 정렬한 후
    각 페이지의 인덱스로 지정된 열의 첫 번째 값을 가지고 루트페이지를 만드는 것입니다.

 

아래 코드는 예시입니다.

먼저 코드를 입력해 줍니다.

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', '소녀시대');

SELECT * FROM cluster;

 

그 후 mem_id에 클러스터형 인덱스를 구성해 주시면 바뀐 것을 확인할 수 있습니다.

ALTER TABLE cluster
    ADD CONSTRAINT 
    PRIMARY KEY (mem_id);
    
SELECT * FROM cluster;

 

 

 

 

보조 인덱스 구성하기

  • 보조 인덱스가 생성되어도 입력한 것과 순서가 동일합니다.
  • 보조 인덱스는 데이터 페이지를 건드리지 않습니다.
  • 별도의 장소에 인덱스 페이지를 생성합니다.

 

아래 코드는 예시입니다.

먼저 코드를 입력해 줍니다.

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', '소녀시대');

 

 

그 후 mem_id 열에 UNIQUE를 지정해 주고 보시면 입력순서가 동일한 것을 확인할 수 있습니다.

ALTER TABLE second
    ADD CONSTRAINT 
    UNIQUE (mem_id);

 

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

  • 클러스터형 또는 보조 인덱스를 이용해서 데이터를 검색하는 것입니다.
  • 두 인덱스 모두 검색이 빠르지만 클러스터형 인덱스가 더 빠르다고 합니다.
  • 속도는 인덱스를 사용하지 않았을 때 보다 빠릅니다.

 

'학습단 > SQL 학습단' 카테고리의 다른 글

5주차 완료  (0) 2023.08.12
혼공스 18일차(인덱스 실제 사용)  (0) 2023.08.10
혼공스 16일차(인덱스)  (0) 2023.08.08
4주차 완료  (0) 2023.07.29
혼공스 15일차(가상의 테이블 뷰)  (0) 2023.07.28