>  기사  >  데이터 베이스  >  MySQL VARCHAR 인덱스가 UTF8에서 255자로 제한되는 이유는 무엇입니까?

MySQL VARCHAR 인덱스가 UTF8에서 255자로 제한되는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-20 15:46:16919검색

Why Are MySQL VARCHAR Indexes Limited to 255 Characters in UTF8?

MySQL VARCHAR 인덱스 길이

문제:

MySQL에서 접두사가 있는 varchar 열 255자를 초과하는 인덱스는 충분한 인덱스가 있음에도 불구하고 데이터 정렬에 사용되지 않습니다.

답변:

MySQL은 인덱스 계산에서 utf8 문자당 3바이트를 가정합니다. 767바이트 인덱스 제한을 사용하면 이는 최대 255자에 해당합니다.

설명:

  • MySQL 인덱스 크기는 바이트 단위로 지정됩니다. VARCHAR과 같은 이진이 아닌 데이터 유형.
  • 열당 최대 접두사 인덱스 크기는 767입니다. bytes.
  • utf8 열의 경우 MySQL은 각 문자가 3바이트를 차지하는 것으로 가정합니다.
  • 따라서 767/3 = 255자는 utf8 열의 최대 인덱스 길이입니다.

추가 고려 사항:

  • 전체 셀 값이 인덱싱되므로 utf8 열에 대한 고유 제약 조건은 255자로 제한됩니다.
  • 일반 인덱스는 255자를 초과하는 열에 적용될 수 있습니다. , 그러나 처음 255자만 색인화합니다.
  • 열의 대부분의 문자가 ASCII인 경우 (1바이트 문자), 인덱스에 255자를 초과할 수 있지만 MySQL의 계산에서는 이를 고려하지 않습니다.
  • innodb_large_prefix 옵션을 활성화하면 인덱스 제한을 3072바이트로 늘릴 수 있습니다. DYNAMIC 또는 COMPRESSED 행 형식을 사용하는 테이블.

위 내용은 MySQL VARCHAR 인덱스가 UTF8에서 255자로 제한되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.