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 중국어 웹사이트의 기타 관련 기사를 참조하세요!