[DB] INDEX의 효과적인 사용

touhou09·2025년 1월 18일
0

컴퓨터 이론

목록 보기
45/47

앞에서 알아본 인덱스의 특징을 바탕으로 효과적인 사용에 대해 정리한다.

인덱스는 열 단위에 생성된다.

하나의 열에 2개 이상의 인덱스를 만들 수 있고, 2개 이상의 열을 묶어서 하나의 인덱스로 만드는 것도 가능은 하지만, 이런 경우는 드물기 때문에 하나의 열에 하나의 인덱스를 만드는 것이 가장 일반적이다.

WHERE 절에서 사용되는 열에 인덱스를 만들어야 한다.

SELECT를 사용할 때, WHERE의 조건에 해당 열이 나와야 인덱스를 사용한다.

만약, NAME과 관련된 SQL 문 하나를 사용한다고 한다면 NAME 열의 인덱스만 사용하기 때문에 NAME 외의 다른 열에 INDEX를 만드는 것은 낭비가 된다.

WHERE 절에서 사용되더라도 자주 사용해야 가치가 있다.

만약 NAME 열에 인덱스를 생성해서 효율이 아주 좋아진다고 하더라도, SELECT는 자주 사용하지 않고 INSERT 작업이 주로 이루어지는 경우에는 INSERT의 성능이 나빠지는 인덱스는 역으로 방해가 되기 때문에 INDEX가 없는 편이 나을 수 있다.

데이터의 중복이 높은 열은 인덱스를 만들어도 별 효과가 없다.

열에 들어갈 데이터의 종류가 몇 가지 되지 않으면 인덱스가 큰 효과를 내지 못한다.
예를 들면 성별, 국번, 교통수단 등 종류가 제한된 것에는 인덱스가 큰 효과를 낼 수 없다.

클러스터형 인덱스는 테이블 당 하나만 생성할 수 있다.

클러스터형 인덱스는 데이터 페이지를 읽는 보조 인덱스보다 적기 때문에 성능이 더 우수하다.
그러므로 하나밖에 지정하지 못하는 클러스터형 인덱스는 조회할때 가장 많이 사용되는 열(기본키)에 지정하는 것이 효과적이다.

사용되지 않는 인덱스는 제거한다.

실제로 사용되는 SQL을 분석해서 WHERE 조건에서 사용되지 않는 열의 인덱스는 제거할 필요가 있다.
사용되지 않는 인덱스를 제거하면서 공간을 확보함과 동시에 데이터 입력시 발생되는 오버헤드도 줄일 수 있다.

profile
Engineer가 되기 위하여

0개의 댓글