나의 발자취
(고생) VARCHAR(1), CHAR(1) 차이를 모르면... 본문
이렇게 "status"값이 저장된다.
실제 DB를 확인해보면 이 모든게 공백까지 포함해서 다 ... 저장된다.
보니까 status의 타입이 CHAR(1)로 저장되어서 발생하는 문제였다.
따라서 아래와 같이 고쳐줬다.
그런데 이렇게 해도 에러가 났다. 시퀄라이저는 바차를 지원하지 않기 때문에..
이렇게 바꾸어주었다.
잘 된다
그리고선 마이그레이션을 지우고 다시 실행...
1. CHAR(1)
- 특징:
- 고정 길이 문자열을 저장
- 데이터 길이가 필드의 정의된 길이보다 짧으면 **빈칸(공백)**으로 채워 저장
- 예를 들어, CHAR(1) 필드에 "A"를 저장하면 길이가 1이므로 그대로 저장됩니다. 하지만, CHAR(5)에 "A"를 저장하면 "A "로 공백이 추가됨
- 장점:
- 고정 길이로 저장하므로 조회 성능이 약간 더 좋다. (주로 아주 큰 데이터에서 차이가 느껴짐)
- 길이가 일정한 데이터를 저장할 때 유리
- 단점:
- 고정 길이로 저장되므로, 정의된 길이보다 짧은 데이터를 저장할 경우 공간 낭비가 발생할 수 있음
- 데이터 비교 시 공백도 포함될 수 있으므로 추가 처리가 필요
2. VARCHAR(1)
- 특징:
- 가변 길이 문자열을 저장
- 데이터 길이만큼만 저장하며, 공백을 추가하지 않음
- 예를 들어, VARCHAR(1) 필드에 "A"를 저장하면 길이 1의 데이터만 저장
- 장점:
- 저장 공간이 효율적입니다. 길이에 따라 저장 용량이 줄어듦
- 데이터를 그대로 저장하므로, 공백 처리에 대한 걱정이 없음
- 단점:
- 가변 길이 때문에 고정 길이와 비교해 약간의 성능 손실이 있을 수 있음
- 이 차이는 소규모 데이터에서는 거의 무시해도 될 수준
CHAR(1)와 VARCHAR(1)의 실제 차이
- 문자열 길이가 1로 고정된 데이터('A', 'B' 등)를 저장할 때, CHAR(1)와 VARCHAR(1)의 차이는 거의 없음
- 하지만:
- 데이터 정밀도가 중요하다면, CHAR(1) 사용을 고려 (길이가 고정이므로 일관성 유지)
- 공간 효율성과 데이터 유연성이 중요하다면 VARCHAR(1)를 사용
'프로젝트' 카테고리의 다른 글
KeyPath란? (0) | 2024.12.10 |
---|---|
Instagram, Facebook 같은 앱에서도 사용하는 일반적인 패턴인 페이지네이션이란? (0) | 2024.12.10 |
커뮤니티 신고 기능 구현 (0) | 2024.11.27 |
이미지 파일 업로드 기능 구현 (feat. BLOB, BYTEA), 이틀간 작업 내역 (1) | 2024.11.20 |
앱 제작 과정 (6) DB setup 완료, seed data 넣기 완료 (0) | 2024.11.20 |
Comments