Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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
Archives
Today
Total
관리 메뉴

공부하자

INDEX 본문

Database

INDEX

kmhello 2023. 3. 20. 13:32

INDEX란?

-       데이터 베이스 테이블 검색에 대한 검색 성능 속도를 높여주는 기능

-       인덱스 생성 시 데이터 오름차순으로 정렬

-       일반적으로 DB에서 B+tree방식 사용

 

INDEX 종류

1.     클러스터 인덱스

-       PK생성시, 자동으로 생성되는 인덱스

-       테이블당 1

 

2.     보조 인덱스

-       클러스터 인덱스를 제외한 인덱스

-       개발자가 따로 지정

-       복수 설정 가능

 

INDEX 장점

1.     테이블 조회 속도 , 성능 향상

2.     시스템 부하 감소

 

INDEX 단점

1.     인덱스를 관리하기 위해 추가 저장공간이 필요(DB의 약 10%)

2.     인덱스를 관리하기 위해 추가 작업(추가, 삭제, 수정, …)이 필요하다

-> 인덱스 관리를 하지 않을 경우 오히려 성능이 저하됨.

 

INDEX 사용 주의점

1.     INSERT, UPDATE, DELETE가 빈번하게 일어나는 테이블은 주의해야함.

2.     검색하고자하는 데이터가 테이블의 10~15% 이하일 경우 가장 효율적이다. 그 이상이거나 이하일 경우에는 인덱스 사용이 무의미함

3.     속도 향상을 위해서는 먼저 쿼리를 짜야 효율적인지 고려를 하고 인덱스 사용은 최후의 수단으로 사용하는 것이 좋음

4.     인덱스를 추가했다면 대량의 데이터로 해당 테이블 CRUD 테스트

(CRUD – 생성[create], read[읽기], update[갱신], delete[삭제])

5.     사용하지 않는 인덱스는 제거(인덱스 관리)

6.     FK를 지정한 열은 자동으로 FK 인덱스가 생성된다

(DBMS에 따라 상이함. MariaDB는 생성해주지만 Oracle은 생성하지 않음)

 

INDEX 사용하기 좋은 경우

1.     규모가 작지 않은 테이블

2.     INSERT, UPDATE, DELETE 가 자주 일어나지 않는 컬럼

3.     JOIN, WHERE, ORDER BY에 자주 사용되는 컬럼

4.     데이터 중복도가 낮은 컬럼

(회원정보 테이블에 가장 사용하기 좋음)

 

INDEX 확인

SHOW INDEX FROM [테이블명];

 

INDEX 생성

CREATE INDEX [인덱스명] ON [테이블](컬럼);

CREATE INDEX [인덱스명] ON [테이블](컬럼1,컬럼2,…);

묶어서 만들 경우 PK처럼 인덱스 1개를 만들어서 그 안에 컬럼들을 묶어서 하나의 인덱스로 생성

 

INDEX 제거

DROP INDEX [인덱스명] ON [테이블];

 

INDEX는 수정이 안됨. 수정사항이 있을 경우 INDEX를 제거하고 다시 생성

 

 

전체 텍스트 인덱스(Full Text Index)

: 긴 문자로 구성된 텍스트 데이터를 빠르게 검색하기 위한 기능

 

전체 텍스트 인덱스 생성 

CREATE TABLE 테이블명

(

컬럼 데이터 타입

, FULLTEXT 인덱스명(컬럼)

);

 

or

CREATE FULLTEXT INDEX 인덱스명 ON 테이블(컬럼);

 

전체 텍스트 인덱스 삭제

DROP INDEX 인덱스명 ON 테이블명;

'Database' 카테고리의 다른 글

정규화(Normalization)  (0) 2023.03.20
Data Modeling  (0) 2023.03.20
Transaction  (0) 2023.03.20
View  (1) 2023.03.19
Table  (0) 2023.03.19