본문 바로가기
DB/RDB

key와 index

by doriver 2025. 4. 30.

목차 : 1. Index       2. PK        3. FK

key 테이블에 있는 tuple을 유일하게 식별하는 attributes집합을 의미
index 테이블에 있는 tuple을 빠르게 찾기 위해 테이블에 적용되는 추가적인 자료 구조

 

Index

테이블의 특정 컬럼에 인덱스를 생성한다는 것은

, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장한다는 것을 의미한다. 
컬럼의 값과 물리적 주소를 (key, value)의 한 쌍으로 저장하는 것이다.

 

인덱스 생성 및 유지에는 추가적인 저장공간이 필요하며

,  데이터 삽입, 수정, 삭제 작업 시 성능 저하가 발생할 수 있다. 따라서 신중한 사용이 필요하다.

쿼리 분석을 기반으로 어떤 인덱스가 필요한지 결정
자주 사용되는 쿼리와 그 쿼리에서 검색되는 열을 파악하여, 해당 열에 인덱스 생성

인덱스 분할(Partitioning)
대용량 테이블의 인덱스를 여러 개의 작은 파티션으로 나누어 관리하여 검색 성능 향상

 

풀 테이블 스캔 (Full Table Scan)

테이블의 모든 행을 순차적으로 검색하는 것
인덱스를 사용하지 않는 경우, 풀 테이블 스캔을 시행해야해 많은 시간이 소요된다.
따라서 인덱스를 사용하면 검색 성능이 크게 향상된다.

Primary Key

한 테이블 안에서, tuple식별이 목적인 key ( unique , not null )

pk를 통해서 tuple을 찾는 일은 매우 자주 일어나는 일이기 때문에 
대부분의 RDBMS는 pk에 index를 자동으로 생성해 준다

 

Foreign Key

두 테이블 간의 관계를 정의하고 데이터의 일관성을 유지하기 위해 사용되는 제약 조건

FK는 이후에 데이터 또는 테이블 구조 변경시 장애물로 작용할수 있다.

 

pk와는 다르게, fk로 지정해줬다고 해서 자동으로 index가 걸리는 것은 아니다 
RDBMS마다 다름

MySQL의 경우에는 fk에 자동으로 index를 걸어주지만, 다른 RDBMS들은 오히려 자동으로 index를 걸어주지 않는 경우가 더 많다