Don't forget to smile
[혼자 공부하는 SQL] Chapter 6-1. 인덱스 개념을 파악하자 본문
인덱스(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) 정렬이 이루어지지 않으므로 추가 데이터 역시 테이블의 가장 뒤에 추가됨
'SQL' 카테고리의 다른 글
| [혼자 공부하는 SQL] Chapter 6-3. 인덱스의 실제 사용 (0) | 2022.12.09 |
|---|---|
| [혼자 공부하는 SQL] Chapter 6-2. 인덱스의 내부 작동 (0) | 2022.12.09 |
| [혼자 공부하는 SQL] Chapter 5-3. 가상의 테이블: 뷰 (0) | 2022.12.05 |
| [혼자 공부하는 SQL] Chapter 5-2. 제약조건으로 테이블을 견고하게 (2) | 2022.12.01 |
| [혼자 공부하는 SQL] Chapter 5-1. 테이블 만들기 (1) | 2022.11.30 |