본문 바로가기
혼공학습단

[혼공단11기] 혼자 공부하는 SQL 5주차(Chapter 06)

by #FF0000 2024. 2. 4.

 

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 컬럼_이름;

 

 

 

 

혼자 공부하는 SQL | 우재남 - 교보문고

혼자 공부하는 SQL | 혼자 해도 충분하다! 1:1 과외하듯 배우는 데이터베이스 자습서(MySQL Community 8.0 지원) 이 책은 아무런 사전 지식 없는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록

product.kyobobook.co.kr

https://product.kyobobook.co.kr/detail/S000001810432

 

 

 

+ chat GPT를 활용해 INDEX 생성, 삭제하기