Tags
- 큐
- 통계학
- outer join
- 그리디
- N:1
- Article & User
- drf
- distinct
- DB
- stack
- 이진트리
- Queue
- count
- 백트래킹
- delete
- SQL
- M:N
- Tree
- 스택
- 뷰
- create
- ORM
- Django
- Vue
- 트리
- 쟝고
- regexp
- 완전검색
- migrations
- update
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Notice
Recent Posts
Link
데이터 분석 기술 블로그
인덱스 본문
인덱스란?
"인덱스(Index)"는 데이터베이스에서 검색 속도를 향상하기 위해 사용하는 구조입니다. 책의 목차처럼 테이블의 특정 컬럼에 대해 빠르게 데이터를 찾을 수 있도록 돕습니다. 인덱스를 생성하면 데이터베이스가 해당 컬럼에 대해 정렬된 구조를 유지하여, 검색과 정렬 작업이 더 효율적으로 수행됩니다.
인덱스의 개념
- 빠른 데이터 검색:
- 테이블의 데이터 전체를 탐색(Full Table Scan)하지 않고, 인덱스를 통해 필요한 데이터를 빠르게 찾아냅니다.
- 정렬된 데이터 구조:
- 대부분의 인덱스는 B-Tree 구조를 사용하여 정렬된 상태를 유지합니다.
- 추가 저장 공간:
- 인덱스는 별도의 데이터 구조이므로 추가적인 저장 공간이 필요합니다.
- 쓰기 작업의 부담:
- 데이터를 삽입, 수정, 삭제할 때 인덱스를 갱신해야 하므로, 쓰기 성능은 약간 저하될 수 있습니다.
인덱스를 사용하는 이유
- 대규모 데이터베이스에서 검색 속도를 개선.
- WHERE, ORDER BY, GROUP BY, JOIN 등의 조건이 포함된 쿼리에서 성능 향상.
- 고유성을 보장하기 위해 UNIQUE INDEX를 생성.
인덱스의 종류
- 기본 인덱스 (Primary Index):
- 기본 키(Primary Key) 컬럼에 자동으로 생성됩니다.
- 유일성과 비어 있지 않은 값을 보장합니다.
- 보조 인덱스 (Secondary Index):
- 기본 키 외의 컬럼에 대해 생성한 인덱스.
- 검색 속도를 높이기 위해 사용.
- 유니크 인덱스 (Unique Index):
- 컬럼 값의 중복을 허용하지 않는 인덱스.
- 복합 인덱스 (Composite Index):
- 두 개 이상의 컬럼을 조합하여 생성한 인덱스.
- 다중 조건 검색에 유리.
- 클러스터형 인덱스 (Clustered Index):
- 테이블 데이터가 인덱스에 따라 정렬됩니다.
- MySQL의 InnoDB에서 기본 키가 클러스터형 인덱스로 생성.
- 비클러스터형 인덱스 (Non-Clustered Index):
- 인덱스와 실제 데이터가 별도로 저장됩니다.
- 주로 보조 인덱스에서 사용.
인덱스 생성
1. 기본 인덱스 생성:
CREATE INDEX idx_column_name ON table_name(column_name);
- idx_column_name: 인덱스 이름.
- column_name: 인덱스를 생성할 컬럼.
2. 유니크 인덱스 생성:
CREATE UNIQUE INDEX idx_unique_name ON table_name(column_name);
3. 복합 인덱스 생성:
CREATE INDEX idx_composite ON table_name(column1, column2);
4. 인덱스 확인:
SHOW INDEX FROM table_name;
5. 인덱스 삭제:
DROP INDEX idx_column_name ON table_name;
예제
-- 급여 검색 속도 향상을 위한 인덱스 생성
CREATE INDEX idx_salary ON employees(salary);
-- 특정 급여 이상인 직원 검색
SELECT name, salary
FROM employees
WHERE salary > 50000;
'SQL > 개념' 카테고리의 다른 글
ROW_NUMBER (0) | 2024.12.31 |
---|---|
RANK (0) | 2024.12.30 |
ALTER 명령어 (1) | 2024.12.24 |
CREATE 명령어 (0) | 2024.12.23 |
DELETE 명령어 (0) | 2024.12.22 |