[Database] 인덱스란?

ref -우재남, 『이것이 SQL Server다』, 한빛미디어(2020)

📌인덱스란? Index

  • 인덱스는 데이터를 빠르게 찾을 수 있도록 도와주는 도구다.
  • 인덱스에는 클러스터형 인덱스와 보조 인덱스가 있다.

✅인덱스를 사용하는 이유

  1. select 문으로 검색하는 속도가 매우 빠름.
  2. 그 결과 컴퓨터의 부담이 줄어들면서 결국 전체 시스템의 성능이 향상됨.

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

  • 기본키로 지정하면 자동 생성되며 테이블에 1개만 만들수있다. 기본 키로 지정한 열을 기준으로 자동으로 정렬된다 => 영어사전과 비슷한 개념임. A~Z
create table test1 (
    col1 int primary key, -- 기본키로 지정
    col2 int,
    col3 int
);

show index from test1 -- 인덱스 정보 확인

image description

  1. Key_name 부분을 보면 PRIMARY 라고 써져있는데 이것이 기본 키로 설정해서 자동으로 생성된 인덱스라는 의미. 이것이 바로 클러스텨형 인덱스이다.
  2. Non_unique는 인덱스의 값이 중복되어도 된다는뜻. 중복이 허용이 되냐는 뜻. 0은 false , true 1. 결론 -> 이 인덱스는 중복을 허용하지 않는다.

  • 기본키를 지정하지 않는 클러스트형 인덱스 예제
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,'서울');

image description

  1. 결과는 데이터를 입력한 순서 그대로 나옴.

  • 기본키를 지정한 클러스트형 인덱스 예제
alter table member
	add constraint
		primary key(mem_id);
        
select * from member;

image description

  1. mem_id 열에 클러스터형 인덱스가 생성되어 mem_id 열을 기준으로 정렬되어있다. 알파벳 순으로 정렬이된다.

✅보조 인덱스 (Secondary Index)

  • 보조 인덱스는 고유 키로 지정하면 자동 생성되며 여러 개를 만들수 있지만 자동 정렬되지는 않는다. => 일반 책의 제일 뒷부분 수록느낌.
  • 보조 인덱스는 단순 보조 인덱스(Simple Secondary Index)와, 고유 보조 인덱스(Unique Secondary Index) 로 나뉜다. 단순 보조 인덱스는 중복을 허용한다는 의미고, 고유 보조인덱스는 그 반대로 중복을 허용하지 않는 인덱스이다.
create table test2(
    col1 int primary key,
    col2 int unique,  -- 고유키로 지정
    col3 int unique   -- 고유키로 지정
);

show index from test2

image description

  1. key_name에 col2,col3이라고 열 이름이 써져있다. key_name에 열 이름이 써 있는 것은 보조 인덱스이다.
  2. 고유키를 여러개 지정하듯이 , 보조 인덱스도 여러개 만들수 있다.

Categories:

Updated:

Leave a comment