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)
);
'데이터 > SQL' 카테고리의 다른 글
[프로그래머스] 강원도에 위치한 생산공장 목록 출력하기 (0) | 2023.08.28 |
---|---|
[혼공] 6-2장 인덱스의 내부 작동 (0) | 2023.08.14 |
[혼공] 5-3장 가상의 테이블 뷰 (0) | 2023.08.13 |
[혼공] 5-2장 테이블 제약조건 (0) | 2023.08.13 |
[혼공] 4-3장 SQL 프로그래밍 (0) | 2023.08.12 |