본문 바로가기

dev

[SQL] 데이터타입 CHAR 과 VARCHAR 차이점과 성능비교

반응형

 CHAR 와 VARCHAR 는 데이터베이스에서 문자열을 저장하는 데 사용되는 두 가지 데이터 타입입니다.

이 두 타입은 문자열을 저장하는 방식과 공간 활용 측면에서 차이가 있습니다. 그에 따른 성능에 영향이 있는데 두 데이터 타입에 대해 비교해서 알아보도록 하겠습니다.

 

CHAR

CHAR 은 고정 길이의 문자열을 저장하는 데 사용됩니다.

예를 들어, CHAR(10) 은 항상 10개의 문자를 저장할 수 있는 타입입니다.
저장되는 각각의 문자열이 항상 고정된 크기를 가지기 때문에, 실제로 저장되는 데이터 크기는 지정된 길이와 동일합니다.
문자열이 지정된 길이보다 짧을 경우 공백으로 나머지 부분을 채워 저장합니다.
검색 속도가 빠르며, 고정된 크기로 인해 공백 문자로 인한 저장 공간을 낭비할 수 있습니다.

예를 들어 VARCHAR(50)은 최대 50자까지 저장할 수 있는 VARCHAR입니다.

 

VARCHAR

VARCHAR 는 'Variable Character'의 줄임말로, '가변 길이 문자열'을 의미합니다.

이는 해당 데이터 타입이 저장하는 문자열의 길이가 가변적이라는 점을 나타냅니다. '가변 길이'는 해당 데이터 필드에 저장되는 문자열이 최대 길이를 초과하지 않는 한 실제로 저장되는 데이터 크기에 따라 변할 수 있음을 의미합니다.

지정된 최대 길이까지의 문자열을 저장하며, 실제 저장되는 데이터의 크기는 저장된 문자열의 길이에 따라 변합니다.
고정 크기가 아니기 때문에 CHAR에 비해 저장 공간을 덜 사용합니다. (CHAR 와 달리 공백문자에 대한 저장공간을 소비하지 않기때문에..) 하지만 검색 속도는 CHAR보다 느릴 수 있습니다.
지정된 최대 길이를 초과하는 문자열은 저장할 수 없습니다.

예를 들어 CHAR(10)은 항상 10자리를 차지하는 CHAR입니다.

 

 

ex) DDL 작성시 적절한 CHAR 와 VARCHAR 사용 비교 예시를 들어보자면 다음과 같다.

CREATE TABLE product (
    product_id INT,
    product_name VARCHAR(100), -- 상품명은 최대 100 byte 까지 저장, 상품명은 가변길이 문자
    product_code CHAR(12)   -- 상품코드는 최대 12byte 까지 저장, 상품코드는 고정길이 문자
);

상품마다 이름이 다른 상품명의 경우 가변길이 varchar 를 사용하고 상품명처럼 고정길이 문자로 관리되는 상품코드는 char 를 선언하여 사용한다. 

 

 

결론은 문자형 데이터 타입의 선택은 주로 데이터의 특성과 사용 목적에 따라 결정됩니다. 만약 데이터의 크기가 고정되어 있고, 해당 크기의 데이터만 필요한 경우에는 CHAR을 사용하는 것이 적합할 수 있습니다. 반면에 데이터의 길이가 다양하거나 변할 수 있는 경우에는 VARCHAR을 사용하는 것이 일반적입니다.

 

반응형