목차 : 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를 걸어주지 않는 경우가 더 많다
'DB > RDB' 카테고리의 다른 글
| MySQL, PostgreSQL 비교 (0) | 2025.05.10 |
|---|---|
| FK 사용하지 않는 이유( 단점 ? ) (0) | 2025.05.01 |
| 미니 쇼핑몰 ddl, 상품 주문까지 sql (0) | 2025.04.26 |
| sql Join 튜닝( 순서 , 방법 ) (0) | 2025.04.22 |
| index, 테이블 엑세스, 인덱스 손익분기점 (0) | 2025.04.22 |