본문 바로가기
ComputerScience/RealMySQL

8.인덱스 - 인덱스란?

by 규난 2022. 12. 14.
728x90

이번 포스트에서는 MySQL의 인덱스에 대해서 알아보겠습니다.

 

인덱스

DBMS에서 데이터의 저장(INSERT, UPDATE, DELETE)성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능입니다.

SELECT 쿼리 문장 WHERE 조건절에 사용되는 컬럼이라고 해서 전부 인덱스로 생성하면 데이터 저장 성능이 떨어지고 인덱스의 크기가 비대해져 오히려 역효과가 날 수 있습니다.

 

인덱스는 크게 프라이머리 키(Primary Key)와 보조 키(Secondary Key)로 구분할 수 있습니다.

 

프라이머리 키(Primary Key)

그 레코드를 대표하는 컬럼의 값으로 만들어진 인덱스를 의미합니다.

이 컬럼은(때로는 복합 키로 컬럼의 조합이 될 수 있음) 테이블에서 해당 레코드를 식별할 수 있는 기준값이 되기 때문에 이를 식별자라고도 부릅니다. NULL 값을 허용하지 않으면서 중복을 허용하지 않는 것이 특징입니다. 

 

보조 키(Secondary Key)

프라이머리 키를 제외한 나머지 모든 인덱스는 보조 키로 분류합니다.

유니키 인덱스는 프라이머리 키와 성격이 비슷하고 대체해서 사용할 수 있기 때문에 대체 키라고도 부릅니다.

 

인덱스가 유니크한지 아닌지는 실제 DBMS의 쿼리를 실행해야 하는 옵티마이저에게 상당히 중요한 부분입니다.

유니크 인덱스에 대해 동등 조건(equal, =)으로 검색한다는 것은 항상 1건의 레코드만 찾으면 더 찾지 않아도 된다는 것을 옵티마이저에게 알려주는 효과를 나타냅니다. 이 부분은 9장 10장에서 더 자세히 알아보도록 하겠습니다.

 

 

728x90