char만 fixed length type이고, text와 varchar는 variable length data type 입니다.
아래 레퍼런스 글을 바탕으로 정리해보자면, text와 varchar는
- max size limit을 정할 수 있는가
- text: 없다, 무조건 65535
- varchar: 있다. 1 ~ 65535
- 저장된 character 외의 현재 저장하고 있는 string의 사이즈를 저장하는데 1~2 byte를 더 쓴다
- text: 무조건 2 byte
- varchar: x <= 255 then, 1 byte, 256 <= x <= 65535 then, 2 byte
- index의 일부로 쓰일 수 있는가
- text: 없다
- varchar: 있다
- 기타
- text: disk에 저장해서 느림
- varchar: memory에 저장해서 빠름
으로 요약해볼 수 있겠습니다.
참고로 기타에 적혀있는 것처럼 text는 disk에 저장되기 때문에 자주 불리는 query에서는 performance 차이가 크다고 하니 사용에 주의해야 된다고 합니다!
위 내용을 잘 이해했는지 확인하기 위해서 아래 문제를 한 번 풀어보세요!
latin1 이라는 charset을 사용하고 "Test"라는 값을 저장할 때,
Q1. VARCHAR(30), VARCHAR(100) 또는 TINYTEXT에 저장하는 경우 몇 바이트를 사용할까요?
Q2. VARCHAR(2000) 또는 TEXT에 저장하는 경우 몇 바이트를 사용할까요?
정답은 reference 링크에 있습니다!
References
- Difference between VARCHAR and TEXT in MySQL
- Performance difference between Text and Varchar in Mysql
제 글이 도움이 되셨다면 간단하게 '공감', '댓글' 부탁드립니다!
'CS > Database' 카테고리의 다른 글
DB Query Sample (0) | 2019.04.03 |
---|---|
[공유] [MySQL] 인덱스 정리 및 팁 (0) | 2019.03.14 |
댓글