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
반응형