VARCHAR vs TEXT
VARCHAR
: 가변 길이 문자열을 저장
: 1부터 65535의 값을 가질 수 있음
: 길이를 표현하기 위한 공간복잡도 오버헤드 존재 (255까지의 길이는 1byte, 이후로는 2byte)
: 인덱스를 생성할 수 있음
- 최대 저장 크기
: 32,672 byte
: 8,168 글자 입력 가능
TEXT
: 가변 길이 문자열을 저장
: 최대 65535 글자를 생성할 수 있으나, 크기를 미리 지정할 수 없음
: 길이를 표현하기 위해 무조건적으로 2byte의 공간복잡도가 존재
: 인덱스를 제한적으로 생성 가능하지만, 부분 prefix 인덱스만 가능
VARCHAR vs TEXT
- 레코드 관점
: VARCHAR 컬럼이 너무 큰 길이를 사용하면 다른 컬럼들이 사용할 수 있는 최대 공간의 크기에 영향을 끼침
: 이러한 레코드 사이즈의 한계를 고려하여 VARCHAR 타입의 컬럼에는 공간을 아껴서 설정해야한다
: TEXT의 경우 레코드 사이즈 한계에 영향을 끼치지 않는다
- 메모리 관점
: VARCHAR의 경우 설정한 크기 만큼 메모리를 미리 할당받는다
: TEXT의 경우 미리 할당해준 메모리가 없기 때문에 매번 필요한 크기 만큼 메모리를 할당해서 해제후 사용해야함
: 때문에 성능 영향도를 계산하기 어렵다
- VARCHAR
: 최대 길이가 상대적으로 크지 않은 경우
: 테이블 데이터를 읽을 때 항상 해당 컬럼이 필요한 경우
: DBMS 메모리가 충분한 경우
- TEXT
: 최대 길이가 상대적으로 큰 경우
: 테이블에 길이가 긴 문자열 타입 컬럼이 많이 필요한 경우
: 테이블 데이터를 읽을 때 해당 컬럼이 자주 필요치 않은 경우
Reference