외래키(Foreign Key)와 인덱스(Index)는 서로 다른 개념이지만, 성능 및 무결성 유지 측면에서 밀접한 관계가 있습니다.
| 개념 | 설명 |
| 외래키 (Foreign Key) | 다른 테이블의 기본키(또는 유니크 키)를 참조하는 제약 조건 (무결성 유지 목적) |
| 인덱스 (Index) | 데이터를 빠르게 찾기 위한 자료구조 (성능 향상 목적) |
| 상황 | 결과 |
| 부모 테이블에서 삭제할 때 | 자식 테이블 전체 스캔 (성능 저하) |
| JOIN할 때 | 외래키 컬럼 검색 속도 느림 |
| 데이터 무결성 체크 | 전체 탐색 필요로 성능 손실 가능 |
예:
-- 고객 테이블
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- 주문 테이블 (외래키 + 인덱스)
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
-- 외래키 컬럼에 인덱스 추가
CREATE INDEX idx_orders_customer_id ON orders(customer_id);
| 항목 | 설명 |
| 외래키는 참조 대상이 인덱스(보통 PK/UK)여야 함 | ✅ 필수 |
| 외래키 컬럼에는 인덱스가 자동 생성되지 않음 | ❌ 수동으로 생성 필요 |
| 외래키 + 인덱스 조합 | ✅ 성능 향상 및 무결성 유지에 필수 |
| sqlite 소수점 자리수 반올림하는 방법은? (0) | 2025.06.17 |
|---|---|
| db 테이블 생성 시 외래키 역할과 외래키를 설정하고 안하고의 차이는? (0) | 2025.05.16 |
| 쿼리에서 group concat 함수 사용하는 방법은? (0) | 2025.04.17 |
| SQL 쿼리에서 문자열 검색 조건 REGEXP 사용하는 방법은? (0) | 2025.04.13 |
| SQL 데이터베이스 사용 횟수 별 사용자 수 구하는 쿼리 예시 (0) | 2025.03.30 |