[sql] 정규화된 테이블과 비정규화된 테이블 성능 비교

관계형 데이터베이스 설계 시 테이블을 정규화하는 것은 데이터 중복을 줄이고 일관성을 유지하는 데 도움이 됩니다. 하지만 정규화된 테이블은 조인 연산이 많이 필요할 수 있어 성능 저하를 가져올 수 있습니다. 반면에 비정규화된 테이블은 데이터 중복이 발생할 수 있지만 읽기 작업에 있어서는 성능이 향상될 수 있습니다.

정규화된 테이블

정규화된 테이블은 중복을 최소화하기 위해 스키마를 분해하여 테이블을 설계합니다. 예를 들어, 주문 테이블과 제품 테이블이 따로 있고, 주문 테이블에서 제품을 가져오기 위해 조인 연산이 필요합니다.

SELECT 주문.주문번호, 제품.제품명
FROM 주문
INNER JOIN 제품 ON 주문.제품번호 = 제품.제품번호;

비정규화된 테이블

비정규화된 테이블은 중복을 포함하여 데이터를 저장합니다. 이는 읽기 작업의 성능을 향상시킬 수 있습니다. 예를 들어, 주문 테이블에 제품명을 직접 추가하여 조인 연산을 줄일 수 있습니다.

SELECT 주문번호, 제품명
FROM 주문;

데이터베이스의 크기와 사용 패턴에 따라 정규화된 테이블과 비정규화된 테이블 간의 성능 차이가 있을 수 있습니다. 성능 향상을 위해선 실제 사용되는 쿼리 및 데이터에 대한 분석을 통해 적절한 테이블 설계를 선택해야 합니다.

참고 문헌: