Notice
Recent Posts
Recent Comments
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

Don't forget to smile

[혼자 공부하는 SQL] Chapter 6-1. 인덱스 개념을 파악하자 본문

SQL

[혼자 공부하는 SQL] Chapter 6-1. 인덱스 개념을 파악하자

에르더그 2022. 12. 7. 01:31

인덱스(index) : 데이터를 빠르게 찾을 수 있도록 도와주는 도구

실무에서는 인덱스 없이 데이터베이스 운영 불가

인덱스는 제대로 만들면 SELECT 문 검색 속도가 매우 빨라지지만

추가적인 공간을 요구하기에 잘못 만들 경우 공간 낭비가 심해짐

클러스터형 인덱스(Clustered Index) : 기본 키로 지정 시 자동 생성되며 테이블에 1개만 생성 가능

보조 인덱스(Secondary Index) : 고유 키로 지정 시 자동 생성되며 여러 개 생성이 가능하지만 자동 정렬되지 않음

<인덱스 생성>

 

1) 인덱스는 테이블의 열 단위로 생성되며, 하나의 열에는 하나의 인덱스만 생성이 가능

위 코드의 경우 생성한 table1 테이블의 기본 키인 col1을 기준으로 인덱스가 생성되었음

이 인덱스는 클러스터형 인덱스이기 때문에 Non_Unique, 즉 고유하지 않으므로 중복 허용이 불가능

 

2) 반면 Unique 옵션을 사용하여 고유 키를 입력하면 Key_name에 열 이름이 입력된 보조 인덱스가 생성

<클러스터형 인덱스>

기본 키 생성 시 자동으로 생성되는 클러스터형 인덱스의 가장 큰 특징은 열 기준 자동 정렬

즉, 새로운 데이터가 입력되면 해당 열을 기준으로 알파벳 순서로 자동 정렬됨

 

1) 우선 멤버 아이디, 멤버 이름, 멤버 수, 주소를 열로 가지는 간단한 테이블을 생성 후 데이터를 입력

위 테이블은 아직 기본 키가 없으므로 데이터가 입력된 순서대로 정렬되는 모습을 알 수 있음

 

2) 하지만 mem_id를 기본 키로 설정하자 출력값이 mem_id의 알파벳 순으로 정렬되는 모습을 알 수 있음

 

3) 이번에는 기본 키를 mem_id에서 mem_name으로 변경하자 출력값이 가나다 순으로 정렬되는 모습을 알 수 있음

 

4) 이 상태에서 새 데이터를 입력할 경우 현재 인덱스인 mem_name의 순서에 맞는 자리에 데이터가 입력

<보조 인덱스>

고유 키 지정 시 자동으로 생성되는 보조 인덱스의 가장 큰 특징은 기존 데이터를 변경시키지 않는 것

보조 인덱스는 데이터베이스 공간을 크게 차지하므로 꼭 필요한 열에만 생성해야 함

 

1) 클러스터형 인덱스와 마찬가지로 새로운 테이블을 생성한 후 데이터 입력

 

2) mem_id를 고유 키로 설정했음에도 불구하고 기존 출력값과 차이가 없음

 

3) mem_name에 고유 키를 추가로 지정하여 보조 인덱스를 생성해도 출력값은 동일

 

4) 정렬이 이루어지지 않으므로 추가 데이터 역시 테이블의 가장 뒤에 추가됨