Database

[MSSQL] MSSQL 문자열 타입

JINJINC 2025. 5. 26. 18:13
728x90
반응형

MSSQL 문자열 타입 정리 및 사용 가이드

문자열 타입 개요

MSSQL에서 문자열 타입은 크게 VARCHAR, NVARCHAR, 그리고 UTF-8을 사용하는 VARCHAR(UTF8 Collation)으로 나눌 수 있습니다. 각 타입은 저장방식, 속도, 다국어 지원 등에서 차이가 있습니다.

타입 인코딩 방식 주요 특징
VARCHAR ANSI/DB Collation(Latin1 등 단일 바이트) 가장 가볍고 빠름 (한글 등 유니코드 지원 제한)
NVARCHAR UCS-2(UTF-16 유사) 유니코드 전용, 모든 언어 표현 가능, 항상 2바이트 이상 사용
VARCHAR + UTF8 Collation UTF-8 다국어 지원 + 공간 절약 (MSSQL 2019+)

1. 메모리 사용량(저장 공간)

각 타입에 따라 메모리 사용량이 달라지므로, 상황에 따라 적절한 타입을 선택해야 합니다.

문자열 VARCHAR (Latin1) NVARCHAR (UTF-16) VARCHAR + UTF8
abc (ASCII) 3 bytes 6 bytes 3 bytes
한글 (2자) ❌ 깨짐 4 chars × 2 = 8 bytes 2자 × 3 = 6 bytes
你好 (중문) ❌ 깨짐 4 chars × 2 = 8 bytes 2자 × 3 = 6 bytes

📌 결론:

  • ASCII 문자만 저장한다면 VARCHAR가 효율적입니다.
  • 다국어 문자는 NVARCHAR가 모든 언어를 표현하지만 항상 2바이트씩 소비합니다.
  • UTF8 Collation을 적용한 VARCHAR는 가변 길이로 다국어를 효율적으로 저장합니다.

2. 속도 차이

속도와 성능은 데이터 타입과 사용 목적에 따라 다릅니다.

항목 VARCHAR (기본 Latin) NVARCHAR VARCHAR (UTF8 Collation)
비교 속도 빠름 (단일 바이트) 느림 (2바이트 처리) 약간 느림 (가변 바이트 처리)
정렬 속도 빠름 느림 중간
전체 성능 🟢 좋음 🟡 보통 🟡 보통 ~ 느림

📌 설명:

  • NVARCHAR는 유니코드를 처리하므로 비교 연산 등이 느립니다.
  • VARCHAR + UTF8 Collation은 VARCHAR보다 연산이 약간 느리지만, 공간 효율성이 좋습니다.

3. 정렬 및 LIKE 검색 성능

  • NVARCHAR는 유니코드 정렬과 비교 연산으로 인해 속도가 느립니다.
  • UTF8 Collation 적용한 VARCHAR은 가변 길이로 인해 인덱스 성능이 다소 떨어집니다.
  • LIKE 연산 속도는 기본적인 VARCHAR가 가장 빠릅니다.

4. 외부 시스템 호환성

외부 시스템과의 연동 시 인코딩은 중요한 고려사항입니다.

항목 VARCHAR NVARCHAR VARCHAR + UTF8
JSON, Web API 제한됨 유니코드 호환 UTF-8로 매우 우수
파일 저장 ANSI 텍스트 유니코드 UTF-8 텍스트
외부 시스템 연동 제한적 가능 가장 우수 ✅

요약 및 추천 기준

상황 추천 타입
영어/숫자 위주 데이터 VARCHAR
국제화 필수 데이터, 레거시 시스템 지원 NVARCHAR
국제화 데이터, 최신 시스템 및 효율적 저장 필요 VARCHAR(…) COLLATE …UTF8

이러한 내용을 기반으로 MSSQL의 문자열 타입을 적절하게 선택하고 활용할 수 있습니다.

728x90
반응형