Post

INDEX

인덱스(INDEX)란?

image

DB에서 검색 속도를 높이기 위해 사용되는 기술입니다.

INDEX는 DB에서 테이블의 특정 컬럼에 대한 데이터 구조이며,

전체 데이터를 스캔하지 않고 원하는 데이터를 찾기 때문에 검색 속도를 향상시킬 수 있습니다.

테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에

데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고 있습니다.

인덱스를 활용하면, 데이터를 조회하는 SELECT 외에도 UPDATE나 DELETE의 성능이 함께 향상됩니다.

하지만 CREATE, DELETE, UPDATE가 빈번한 속성에 인덱스를 걸게 되면 인덱스의 크기가 비대해져서 성능이 오히려 저하되는 역효과가 발생할 수 있습니다.

인덱스의 장단점

장점

조회 속도가 빨라집니다.

전반적인 시스템 부하를 줄일 수 있습니다.

단점

인덱스를 관리하기 위해 추가적인 저장공간이 필요합니다.

인덱스를 관리하기 위해 추가작업(오버헤드)이 필요합니다.

잘못 사용할 경우 성능 악화가 될 수 있습니다.

인덱스를 사용하면 좋은 경우

규모가 작지 않은 테이블

INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼

JOIN이나 WHERE 또는 ORDER BY에 자주 사용되는 컬럼

데이터의 중복도가 낮은 컬럼

Clustered Index

Clustered Index는 개발자가 설정하는 Index가 아닌 MySQL이 자동으로 설정하는 Index입니다.

해당 테이블에 Auto increments 값으로 PK가 있다면 해당 컬럼이 Clustered Index가 됩니다.

만약 해당 PK가 없다면 컬럼 중에 Unique컬럼을 Clustered Index로 선정합니다.

unique컬럼도 하나도 없다면? MySQL에서 내부적으로 Hidden Clustered Index Key (row ID)를 만들어 Clustered Index로 사용합니다.

This post is licensed under CC BY 4.0 by the author.