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

혼공스 16일차(인덱스)

by 루이3 2023. 8. 8.

인덱스

  • 인덱스는 데이터를 빠르게 찾을 수 있도록 도와주는 도구입니다.
  • 실무에서는 현실적으로 인덱스 없이 데이터 베이스 운영이 불가능하다고 합니다.
  • 인덱스는 클러스터형 인덱스와 보조 인덱스가 있습니다.
  • 책 뒤의 찾아보기는 색인, 인덱스라고도 부릅니다.
  • 고유 인덱스는 값이 중복되지 않는 인덱스를 말합니다.

 

테이블 인덱스의 정보를 확인하는 방법

SHOW INDEX 문을 사용하면 인덱스 정보가 확인됩니다.

SHOW INDEX FROM 테이블_이름;

 

예시) member 테이블에서 첫번째 열을 기본키로 지정했을때(table_1) 인덱스 정보 확인하기

SHOW INDEX FROM table1;

 

 

 

인덱스의 장점과 단점

 

장점

  • 적절한 인덱스를 생성 하고 인덱스를 사용하면 기존보다 아주 빠른 응답속도를 얻을수 있습니다.
  • SELECT 문으로 검색하는 속도가 매우 빨라집니다.
  • 컴퓨터의 부담이 줄어들어 전체 시스템의 성능이 향상됩니다.

 

단점

  • 인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간이 필요합니다.
  • 처음에 인덱스를 만드는게 시간이 오래 걸릴 수 있습니다.
  • 변경작업이 자주 일어나면 오히려 성능이 나빠질수 있습니다.

 

 

 

클러스터형 인덱스

  • 기본 키로 지정하면 자동 생성되며 테이블에 1개만 만들수 있습니다.
    (기본키는 테이블에 하나만 지정할수 있기 때문입니다.)
  • 기본 키로 지정한 열을 기준으로 자동 정렬됩니다.
  • 영어사전과 비슷합니다.

 

사진에 있는 Key_name 부분에 PRIMARY라고 써 있는데 이게 자동으로 생성된 인덱스라는 의미이고 이것이
클러스터형 인덱스 입니다.

 

 

자동으로 정렬되는 클러스터형 인덱스

아래 코드는 기본키를 제거한 후에  mem_name 열을 기준으로 다시 클러스터형 인덱스를 생성하는 것입니다.

(주의 할점으로 원래 있던 member 테이블에서 외래 키가 필요했으므로 제거후 다시 만들어주셔야 합니다.)

ALTER TABLE member DROP PRIMARY KEY;

ALTER TABLE member 
    ADD CONSTRAINT 
    PRIMARY KEY(mem_name);
    
SELECT * FROM member;

 

 

 

보조 인덱스

  • 고유 키로 지정하면 자동 생성되며 여러개를 만들 수 있지만 자동정렬은 되지 않습니다.
  • 일반 책 뒤의 찾아보기와 비슷합니다.
CREATE TABLE table2  (
    col1  INT  PRIMARY KEY,
    col2  INT  UNIQUE,
    col3  INT  UNIQUE,
    col4  INT  UNIQUE
);

SHOW INDEX FROM table2;

 

 

사진에 있는 Key_name 부분에 col2, col3, col4 라고 열이름이 써져 있는데 이게 보조인덱스 입니다.