인덱스의 개념
인덱스 : 데이터를 빠르게 찾을 수 있도록 하는 도구
- 클러스터형 인덱스 : 기본 키로 지정 시 자동 생성, 테이블에 1개만 생성 가능
- 보조 인덱스 : 고유 키로 지정하면 자동 생성, 여러 개 생성 가능, 자동 정렬 x
인덱스의 장점
SELECT 문 검색 속도 향상
컴퓨터의 부담 감소 → 전체 시스템 성능 향상
인덱스의 단점
인덱스도 공간을 차지하기 때문에 DB 내에 추가적인 공간이 필요하다.
처음 인덱스 생성 시 시간 소요된다.
SELECT가 아닌 INSERT, UPDATE, DELETE가 자주 일어나면 오히려 성능 저하를 유발하게 된다.
인덱스의 종류
클러스터형 인덱스
→ 자동으로 생성되는 인덱스
- 자동으로 생성되는 인덱스 확인하기
use market_db;
create table table1 (
col1 int primary key,
col2 int,
col3 int
);
show index from table1;

→ [Key_name]이 PRIMARY로 되어 있다
→ 기본 키로 설정해서 ‘자동으로 생성된 인덱스’
- 자동으로 정렬되는 클러스터형 인덱스
-- 회원 테이블 새로 생성하고 컬럼 만들기
use market_db;
drop table if exists buy, member;
create table member
( mem_id char(8),
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('WMN', '여자친구', 6, '경기');
insert into member values('OMY', '오마이걸', 7, '서울');
select * from member;

- mem_id 컬럼을 기본 키로 설정 후 조회하기
alter table member
add constraint
primary key (mem_id);
select * from member;

→ mem_id 를 기준으로 정렬 순서가 바뀐 것을 확인할 수 있다
(알파벳 순서로 정렬)
- mem_name 컬럼을 기본 키로 설정 후 조회하기
alter table member drop primary key;
alter table member
add constraint
primary key(mem_name);
select * from member;

→ mem_name 컬럼을 기준으로 데이터가 다시 정렬되었음
- 추가로 데이터 입력해보기
insert into member values('GRL','소녀시대',8,'서울');
select * from member;

→ 추가로 데이터를 insert할 경우 자동으로 기준에 맞춰 정렬된다
보조 인덱스
- 고유 키로 생성되는 인덱스 확인하기
create table table2 (
col1 int primary key,
col2 int unique,
col3 int unique
);
show index from table2;

→ 보조 인덱스는 고유 키로 지정하면 자동으로 생성, 테이블에 여러 개 생성 가능
→ 기본 키와 마찬가지로 고유 키도 중복값을 허용하지 않는다 (Non_unique = 0)
- 정렬되지 않는 보조 인덱스
-- 테이블 drop 하고 새로 생성하기
drop table if exists member;
create table member
( mem_id char(8),
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('WMN', '여자친구', 6, '경기');
insert into member values('OMY', '오마이걸', 7, '서울');
select * from member;

- mem_id 컬럼을 고유 키로 설정하고 조회하기
alter table member
add constraint
unique (mem_id);
select * from member;

→ 보조 인덱스를 생성해도 데이터의 순서는 변경되지 않는다.
- -mem_name 컬럼에 추가로 고유 키를 설정하고 조회하기
alter table member
add constraint
unique (mem_name);
select * from member;

→ 추가로 고유 키를 지정해도 데이터의 내용과 순서는 그대로이다
- 데이터 추가로 입력하기
insert into member values('GRL','소녀시대',8,'서울');
select * from member;

→ 새로운 데이터 추가 시 가장 마지막에 입력된다.
클러스터형 인덱스 : 기본 키로 지정하면 해당 열로 자동 정렬
보조 인덱스 : 고유 키로 지정하면 보조 인덱스 생성, 자동 정렬되지 않는다
'Language > SQL' 카테고리의 다른 글
| [MySQL] 인덱스를 활용해보자 (0) | 2024.08.21 |
|---|---|
| [MySQL] 인덱스의 내부 작동 방식을 이해하자 (7) | 2024.08.21 |
| [MySQL] 가상의 테이블인 뷰(View)에 대해 알아보자 (0) | 2024.08.21 |
| [MySQL] 제약조건에 대해 알아보자 (0) | 2024.08.21 |
| [MySQL] SQL 프로그래밍 (4) | 2024.08.21 |