> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 VARCHAR과 TEXT: 주요 차이점은 무엇입니까?

MySQL의 VARCHAR과 TEXT: 주요 차이점은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-02 18:17:20
원래의
343명이 탐색했습니다.

VARCHAR vs. TEXT in MySQL: What are the key differences?

MySQL의 VARCHAR과 TEXT의 차이점

MySQL에서 테이블 생성 시 VARCHAR 타입 컬럼의 길이를 명확히 설정해야 한다. 단, TEXT 유형의 경우 길이를 지정할 필요가 없습니다. 그렇다면 VARCHAR과 TEXT의 차이점은 무엇입니까?

TL;DR

TEXT

  • 최대 길이 65535자 고정(최대 길이를 제한할 수 없음)
  • 점유 디스크 공백 2c 바이트, 여기서 c
  • 문자열 길이를 저장하려면 (완전히) 색인을 생성할 수 없으며 접두사 길이

VARCHAR(M)

    가변 최대 길이 M자
  • M은 1에서 65535 사이여야 합니다.
  • 1c바이트(M  255) 또는 2c바이트(256  M  65535)의 디스크 공간을 차지합니다. 여기서 c는 저장된 문자열의 길이입니다.
  • 인덱싱 가능
세부정보

TEXT의 최대 길이는 다음과 같이 고정됩니다. 21⁶-1 = 65535자이지만 VARCHAR의 최대 길이는 최대 21⁶-1까지 가변적입니다. 따라서 TEXT의 크기는 선택할 수 없으나 VARCHAR의 크기는 선택할 수 있습니다.

또 다른 차이점은 TEXT 열에는 인덱스가 허용되지 않는다는 것입니다(전체 텍스트 인덱스 제외). 따라서 이 열을 인덱싱하려면 VARCHAR을 사용해야 합니다. 그러나 인덱스 길이도 제한되어 있습니다. VARCHAR 열이 너무 길면 인덱스는 VARCHAR 열의 처음 몇 문자만 사용할 수 있습니다(CREATE INDEX 설명서 참조).

전화번호나 이름 등 입력 가능한 문자열의 최대 길이가 M만인 것을 알고 있는 경우에도 VARCHAR을 사용해야 합니다. 그런 다음 TINYTEXT 또는 TEXT 대신 VARCHAR(30)을 사용할 수 있습니다. 그러면 누군가가 전화번호를 저장하는 데 사용하는 열에 전체 반지의 제왕 텍스트를 저장하려고 해도 처음 30자만 저장하면 됩니다. )

편집:데이터베이스에 저장할 텍스트가 65535자를 초과하는 경우 MEDIUMTEXT 또는 LONGTEXT이지만 주의하세요. 저장되는 최대 문자열 길이는 MEDIUMTEXT의 경우 16MB, LONGTEXT의 경우 4GB입니다. LONGTEXT를 사용하고 PHP를 통해 데이터를 가져오는 경우(적어도 mysqli를 사용하고 store_result 함수를 사용하지 않는 경우) PHP는 전체 문자열이 가능하도록 4GB의 메모리를 할당하려고 시도하므로 메모리 할당 오류가 발생할 수 있습니다. 버퍼링됩니다. 이는 PHP 외에 다른 언어에서도 발생할 수 있습니다.

그러나 데이터베이스에 데이터를 저장하기 전에

항상 입력을 확인해야 합니다(너무 길지 않습니까? 이상한 코드가 포함되어 있습니까?).

참고: 두 유형 모두 필요한 디스크 공간은 최대 길이가 아닌 저장된 문자열의 길이에 따라서만 달라집니다. 예를 들어, 문자 세트 latin1을 사용하고 "Test" 텍스트를 VARCHAR(30), VARCHAR(100) 및 TINYTEXT에 저장하는 경우 항상 5바이트가 필요합니다(문자열 길이를 저장하는 데 1바이트, 각 문자는 1바이트). . VARCHAR(2000) 또는 TEXT 열에 동일한 텍스트를 저장하는 경우에도 동일한 공간이 필요하지만 이 경우 6바이트(문자열 길이를 저장하는 데 2바이트, 문자당 1워드 Festival)를 차지합니다.

자세한 내용은 설명서를 참조하세요.

마지막으로 TEXT와 VARCHAR 모두 가변 길이 데이터 유형이므로 데이터 저장에 필요한 공간을 최소화할 가능성이 높다는 점을 덧붙이고 싶습니다.

위 내용은 MySQL의 VARCHAR과 TEXT: 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿