> 데이터 베이스 > MySQL 튜토리얼 > 내 MySQL 고유 인덱스가 너무 긴 이유는 무엇이며 어떻게 해결할 수 있습니까?

내 MySQL 고유 인덱스가 너무 긴 이유는 무엇이며 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-13 15:43:10
원래의
250명이 탐색했습니다.

Why Is My MySQL Unique Index Too Long, and How Can I Fix It?

MySQL 키 길이 제한 및 수정

두 개의 VARCHAR 열에 고유 인덱스를 생성하려고 하면 사용자에게 "# 1071 - 지정된 키가 너무 깁니다. 최대 키 길이는 767바이트입니다. 이 오류는 MySQL의 키 길이 제한으로 인해 발생합니다.

키 길이 제한 이해

MySQL 버전 5.6 이하에서는 최대 키 길이가 767입니다. InnoDB 테이블의 바이트입니다. 이 제한은 고유 키 내에서 인덱싱된 모든 필드의 조합에 적용됩니다. MyISAM 테이블의 경우 이 제한은 1,000바이트입니다.

UTF-8 문자 인코딩 요소

UTF-8 문자 인코딩(utf8mb4)을 사용할 때 다음 사항에 유의하는 것이 중요합니다. 단일 문자를 나타내기 위해 최대 4바이트를 사용합니다. 결과적으로 767바이트의 최대 인덱스 접두사 길이는 utf8mb4 인코딩 필드의 경우 191자로 효과적으로 줄어듭니다.

가능한 솔루션

  • 줄이기 VARCHAR 필드 크기: VARCHAR 필드의 크기를 줄이면 전체 키가 줄어들 수 있습니다. length.
  • 인덱스 분할: 예에 표시된 대로 인덱싱할 열의 하위 집합을 만듭니다.
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
로그인 후 복사
  • 데이터 모델 검토: MySQL의 범위를 초과하지 않고 비즈니스 규칙을 구현하려면 데이터 모델을 검토하는 것이 도움이 될 수 있습니다. 제한 사항.

MySQL 버전 5.7 이상에서는 최대 키 길이가 3072바이트로 증가되어 큰 키를 처리할 때 더 많은 유연성을 제공합니다. 그러나 키 길이 오류를 방지하려면 문자 인코딩 요소와 데이터 모델 최적화를 고려하는 것이 여전히 중요합니다.

위 내용은 내 MySQL 고유 인덱스가 너무 긴 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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