💡 CHAR
- 고정형
- char는 데이터가 낭비될 수 있음
- 추후에 연산이 필요 없어 검색 속도 및 읽히는 속도가 VARCHAR에 비해 빠름
- ex) 주민번호, 전화번호 등에 사용하면 좋음
💡 VARCHAR
- 가변길이 문자열 타입을 지정
- 입력받은 데이터의 크기가 작을 경우, 그 크기만큼만 메모리를 차지하므로 메모리 사용량을 줄일 수 있다는 장점 가짐
- 1~65535의 값을 가질 수 있음 (바이트 X, 글자 수 O)
- 길이를 표현하기 위한 공간복잡도 2byte 오버헤드 존재
- 255까지의 길이는 1byte, 256부터는 2byte 오버헤드 존재
- 인덱스 생성 가능
💡 TEXT
- 가변길이 문자열 타입을 지정
- 최대 65535글자의 글자 적재 가능하지만 크기 미리 지정 불가
- 길이를 표현하기 위해 무조건 2byte의 공간복잡도 존재
- 인덱스를 제한적으로 생성 가능 (부분 prefix 인덱스만 가능)
💡 VARCHAR vs TEXT 비교!
Index의 일부로 사용 가능 여부
- varchar : 가능
- text : 불가능
max size limit 지정 가능 여부
- varchar : 가능. 1 ~ 65535
- text : 불가능. only 65535
저장된 character 이외의 현재 저장된 string의 저장 공간
- varchar : x <= 255 then, 1 byte, 256 <= x <= 65535 then, 2 byte
- text : only 2 byte
각각 언제 사용하는가?
- varchar : ID, 이메일, 제목, 전화번호와 같은 간단한 정보 (비교적 짧은 문자열)
- text : 댓글, 신문기사와 같은 긴 문장 종류들
기타
- varchar : memory에 저장해서 빠름
- text : disk에 저장해서 느림
- text는 disk에 저장되기 때문에 자주 불리는 query에서는 성능 차이가 큼
-> 데이터가 자주 검색 되는 경우 VARCHAR로 저장하는 것이 빠름