복합 인덱스가 있는 MySQL 테이블을 생성할 때 사용자에게 다음과 같은 문제가 발생할 수 있습니다. 오류 "지정된 키가 너무 깁니다. 최대 키 길이는 1000바이트입니다." 이 오류는 인덱싱된 열의 총 길이가 최대 허용 저장 크기인 1000바이트를 초과했음을 나타냅니다.
제공된 코드 조각의 문제는 인덱스 복합 인덱스의 길이가 너무 길다는 데 있습니다.
KEY `index` (`parent_menu_id`,`menu_link`,`plugin`,`alias`)
이 오류를 해결하려면 다음을 고려하세요. 다음:
1. 인덱스 길이 최적화:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!