5주차(24.1.29 - 2.4) Chapter 06. 인덱스(Index)
INDEX
인덱스(INDEX) : 데이터를 빠르게 찾을 수 있도록 도와주는 도구, 색인 - 클러스터형 인덱스(Clustered Index) : 기본 키로 지정하면 자동 생성, 테이블에 1개만 만들 수 있음. 기본 키로 지정한 열을 기준으로 자동 정렬 - 보조 인덱스(Secondary Index) : 고유 키로 지정하면 자동 생성. 여러 개를 만들 수 있지만 자동 정렬 되지 않음
인덱스가 있다고 무조건 좋은 것은 아니다.
인덱스의 장점
- SELECT 문으로 검색하는 속도가 매우 빨라짐- 컴퓨터의 부담 감소로 전체 시스템 성능의 향상 가능
인덱스의 단점
- 인덱스도 공간을 차지 → 데이터베이스 안에 추가적인 공간 필요- 처음 인덱스 생성시 다수 시간 소요 가능- SELECT 가 아닌 데이터 변경 작업(INSERT, UPDATE, DELETE)가 자주 발생시 성능 감소 가능. → INSERT 시 페이지 분할 발생cf) 페이지 분할 : 데이터를 입력할 때 입력할 페이지에 공간이 없어 2개 페이지로 데이터가 나눠지는 것
인덱스를 효과적으로 사용하는 방법
A. 인덱스는 열 단위에 생성
→ 하나의 열에 하나의 인덱스를 만드는 것이 일반적
B. WHERE 절에서 사용되는 열에 인덱스를 생성
→ 조건 사용 컬럼 이외 인덱스만 사용, 다른 열에 인덱스를 만드는 것은 낭비
C. WHERE 절에 사용되더라도 자주 사용해야 가치가 존재
→ 테이블에 SELECT 대신 INSERT가 자주 사용될 경우 인덱스가 없는 것이 성능적으로 우수함
D. 데이터의 중복이 높은 열은 인덱스 생성, 사용이 비 효과적
→ 열에 들어갈 데이터의 종류가 몇 가지 되지 않으면 인덱스의 효과 미비
E. 클러스터형 인덱스는 테이블당 하나만 생성
→ 하나밖에 지정하지 못하는 클러스터형 인덱스(기본 키)는 조회할 때 가장 많이 사용되는 열에 지정시 효과적
F. 사용하지 않는 인덱스는 제거
→ WHERE 조건에서 사용하지 않는 열의 인덱스는 제거
→ 공간 확보 및 데이터 I/O에 따른 부하 감소
기본미션
▶ P.310 인덱스 생성하고, key_name 이 PRIMARY로 출력된 결과 확인
1. 인덱스 생성
-- idx_member_addr 인덱스 생성
CREATE INDEX idx_member_addr
ON member (addr);
2. key_name 이 PRIMARY로 출력된 결과 확인
-- member 테이블의 INDEX 조회
SHOW INDEX FROM member;
선택미션
▶ 인덱스 생성, 제거 하는 기본 형식 작성
SQL Query
-- INDEX 생성
CREATE [UNIQUE] INDEX 인덱스_이름
ON 테이블_이름 (열_이름) [ASC | DESC]
-- INDEX 삭제
DROP INDEX 인덱스_이름 ON 테이블_이름
-- cf) 기본키, 고유키로 자동 생성된 인덱스는 DROP INDEX로 제거 불가
-- ALTER TABLE로 기본키나 고유키를 제거 후 자동으로 생성된 인덱스 제거 가능
-- 1. 기본키 삭제
-- ALTER TABLE 테이블_이름
DROP PRIMARY KEY;
-- 2. 고유키 삭제
-- ALTER TABLE 테이블_이름
DROP FOREIGN KEY 컬럼_이름;
https://product.kyobobook.co.kr/detail/S000001810432
+ chat GPT를 활용해 INDEX 생성, 삭제하기
'혼공학습단(한빛미디어)' 카테고리의 다른 글
[혼공단] 11기 혼자 공부하는 SQL 회고(24.1.2 ~ 24.2.13) (1) | 2024.02.13 |
---|---|
[혼공단11기] 혼자 공부하는 SQL 6주차(Chapter 07 ~ 08) (0) | 2024.02.11 |
[혼공단11기] 혼자 공부하는 SQL 4주차(Chapter 05) (0) | 2024.01.28 |
[혼공단11기] 혼자 공부하는 SQL 3주차(Chapter 04) (0) | 2024.01.21 |
[혼공단11기] 혼자 공부하는 SQL 2주차(Chapter 03) (0) | 2024.01.14 |