본문 바로가기

데이터/SQL

[혼공] 6-1장 인덱스 개념

1. 인덱스 

 

인덱스(index)

- 데이터를 빠르게 찾을 수 있도록 도와주는 도구 

- 테이블의 열(컬럼) 단위에 생성

- 하나의 열에는 하나의 인덱스 생성 가능

 

SHOW INDEX

- 인덱스의 정보 확인 

 

장점

 - SELECT문으로 검색하는 속도가 매우 빨라짐

 - 컴퓨터의 부담이 줄어들어서 전체 시스템의 성능이 향상됨

 

단점

 - 인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간 필요 

 - 데이터의 변경 작업 (INSERT,UPDATE,DELETE)이 자주 일어나면 성능이 나빠질 수도 있음

 

 

2. 인덱스의 종류 

 

1) 클러스터형 인덱스 (Clustered Index)

 

- 기본 키로 지정하면 자동생성되며 테이블에 1개만 만들 수 있음

- 영어 사전과 비슷

CREATE TABLE table1 (
    col1 INT PRIMARY KEY,
    col2 INT,
    col3 INT
);

SHOW INDEX FROM table1;

 

Key_name : PRIMARY

 -> 기본 키로 설정해서 '자동으로 생성된 인덱스'

 

Column_name : col1

 -> col1 열에 인덱스가 만들어짐

 

Non_Unique : false

 -> 중복이 허용되지 않는 인덱스 (고유 인덱스)

 

- 클러스터형 인덱스가 생성되면 그 열을 기준으로 자동 정렬

ex)

- mem_id 열을 기본 키로 설정하면 아이디를 기준으로 정렬 순서가 변경

- mem_id열에 클러스터형 인덱스가 생성되어 mem_id열을 기준으로 정렬

- 추가로 데이터를 입력하면 알아서 기준에 맞춰 정렬됨

 

USE market_db;
DROP TABLE IF EXISTS buy, member;
CREATE TABLE member
( mem_id CHAR(8) PRIMARY KEY,
  mem_name VARCHAR(10),
  mem_number INT,
  addr CHAR(2)
);

INSERT INTO member VALUES('TWC','트와이스',9,'서울');
INSERT INTO member VALUES('BLK','블랙핑크',4,'경남');
INSERT INTO member VALUES('WMM','여자친구',6,'경기');
INSERT INTO member VALUES('OMY','오마이걸',7,'서울');
SELECT * FROM member;

 

 

2) 보조 인덱스 (secondary index)

 

- 고유 키로 지정하면 자동 생성되며, 여러 개를 만들 수 있음

- 일반 책의 찾아보기

USE market_db;
CREATE TABLE table2 (
    col1 INT PRIMARY KEY,
    col2 INT UNIQUE,
    co13 INT UNIQUE
);
SHOW INDEX FROM table2;

 

Key_name : col2, col3

 -> Key_name에 열 이름이 써 있는 것은 보조 인덱스를 뜻함

 -> 고유 키를 여러 개 지정할 수 있듯이 보조 인덱스로 여러 개 만들 수 있음

 

- 보조 인덱스를 생성해도 데이터의 순서는 변경되지 않고 별도로 인덱스가 만들어짐

ex)

 - mem_id열을 고유 키로 설정

 - 데이터를 추가하면 정렬되지 않고 추가 

USE market_db;
DROP TABLE IF EXISTS buy, member;
CREATE TABLE member
( mem_id CHAR(8) UNIQUE,
  mem_name VARCHAR(10),
  mem_number INT,
  addr CHAR(2)
);