>데이터 베이스 >MySQL 튜토리얼 >MySQL 오류 1071: '지정된 키가 너무 깁니다. 최대 키 길이는 1000바이트입니다.'를 해결하는 방법은 무엇입니까?

MySQL 오류 1071: '지정된 키가 너무 깁니다. 최대 키 길이는 1000바이트입니다.'를 해결하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-13 19:21:10691검색

How to Solve MySQL Error 1071:

MySQL 오류 1071: "지정된 키가 너무 깁니다. 최대 키 길이는 1000바이트입니다."

복합 인덱스가 있는 MySQL 테이블을 생성할 때 사용자에게 다음과 같은 문제가 발생할 수 있습니다. 오류 "지정된 키가 너무 깁니다. 최대 키 길이는 1000바이트입니다." 이 오류는 인덱싱된 열의 총 길이가 최대 허용 저장 크기인 1000바이트를 초과했음을 나타냅니다.

제공된 코드 조각의 문제는 인덱스 복합 인덱스의 길이가 너무 길다는 데 있습니다.

KEY `index` (`parent_menu_id`,`menu_link`,`plugin`,`alias`)

해결 방법

이 오류를 해결하려면 다음을 고려하세요. 다음:

1. 인덱스 길이 최적화:

  • 긴 VARCHAR 열은 일반적으로 크기가 크고 비효율적인 인덱스로 인해 인덱싱하면 안 됩니다.
  • 접두사 인덱스를 사용하면 데이터의 하위 집합만 인덱싱할 수 있습니다. 일반적으로 전체 길이보다 훨씬 짧습니다. 칼럼.
KEY `index` (`parent_menu_id`,`menu_link`(50),`plugin`(50),`alias`(50))

2. 최적의 접두사 길이 결정:

다음 쿼리를 사용하여 특정 열에 대한 최적의 접두사 길이를 결정합니다.

SELECT
 ROUND(SUM(LENGTH(`menu_link`)<10)*100/COUNT(`menu_link`),2) AS pct_length_10,
 ROUND(SUM(LENGTH(`menu_link`)<20)*100/COUNT(`menu_link`),2) AS pct_length_20,
 ROUND(SUM(LENGTH(`menu_link`)<50)*100/COUNT(`menu_link`),2) AS pct_length_50,
 ROUND(SUM(LENGTH(`menu_link`)<100)*100/COUNT(`menu_link`),2) AS pct_length_100
FROM `pds_core_menu_items`;

예를 들어 쿼리가 다음을 반환하는 경우:

+---------------+---------------+---------------+----------------+
| pct_length_10 | pct_length_20 | pct_length_50 | pct_length_100 |
+---------------+---------------+---------------+----------------+
|         21.78 |         80.20 |        100.00 |         100.00 |
+---------------+---------------+---------------+----------------+

문자열의 80%가 20자 미만임을 나타냅니다. 따라서 접두사 길이가 50인 것은 충분합니다.

3. INT 데이터 유형 조정:

숫자 인수가 뒤에 오는 INT 데이터 유형(예: INT(1))은 저장 또는 값 범위에 영향을 주지 않습니다. INT 데이터 유형은 항상 4바이트를 차지하며 -2147483648에서 2147483647 범위 내의 값을 허용합니다. 숫자 인수는 표시 중 패딩에만 영향을 미칩니다.

위 내용은 MySQL 오류 1071: '지정된 키가 너무 깁니다. 최대 키 길이는 1000바이트입니다.'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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