짧은 대답 : 실제, 성능 또는 스토리지 차이가 없습니다.
긴 대답 :
본질적으로 VARCHAR(3000)
(와 다른 큰 한계)와 ( MySQL에서) 차이는 없습니다 TEXT
. 전자는 3000 자 에서 잘립니다 . 후자는 65535 바이트 에서 잘립니다. . ( 문자가 여러 바이트를 취할 수 있기 때문에 바이트 와 문자를 구별 합니다.)
의 한계가 작을수록 VARCHAR
몇 가지 장점이 TEXT
있습니다.
- "작게"는 버전, 컨텍스트 및에 따라 191, 255, 512, 767 또는 3072 등을 의미
CHARACTER SET
합니다.
INDEXes
열을 색인 할 수있는 크기가 제한됩니다. (767 또는 3072 바이트 ; 버전 및 설정에 따라 다름)
- 컴플렉스에서 생성 된 중간 테이블
SELECTs
은 MEMORY (빠른) 또는 MyISAM (느린)의 두 가지 방식으로 처리됩니다. '큰'열이 관련되면 느린 기술이 자동으로 선택됩니다. (버전 8.0에서는 중요한 변경 사항이 있으므로이 글 머리 기호 항목은 변경 될 수 있습니다.)
- 이전 항목과 관련하여 모든
TEXT
데이터 유형 (과 반대로 VARCHAR
)은 MyISAM으로 바로 이동합니다. 즉, TINYTEXT
생성 된 임시 테이블의 경우 해당 테이블보다 자동으로 더 나쁩니다 VARCHAR
. (그러나 이것은 세 번째 방향으로 토론을합니다!)
VARBINARY
같다 VARCHAR
; BLOB
같다 TEXT
.
다른 답변에 대한 반박
원래의 질문은 한 가지 (사용할 데이터 유형)를 물었습니다. 허용 된 답변은 다른 것 (비 레코드 저장)에 대답했습니다. 그 대답은 이제 구식입니다.
이 스레드가 시작 되고 응답 되었을 때 InnoDB에는 두 개의 "행 형식"만있었습니다. 빨리 이후에, 두 개 더 형식 ( DYNAMIC
및COMPRESSED
)이 추가되었습니다.
의 저장 위치 TEXT
와는 VARCHAR()
기반으로 크기 여부에, 데이터 형의 이름 . 큰 텍스트 / 블럼 열의 온 / 오프 레코드 저장에 대한 업데이트 된 설명은 이 내용을 참조 하십시오 .