Maison > base de données > tutoriel mysql > Pourquoi mon index unique MySQL est-il trop long et comment puis-je y remédier ?

Pourquoi mon index unique MySQL est-il trop long et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-12-13 15:43:10
original
249 Les gens l'ont consulté

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

Limitation de la longueur des clés MySQL et son correctif

Lors de la tentative de création d'un index unique sur deux colonnes VARCHAR, les utilisateurs peuvent rencontrer l'erreur "# 1071 - La clé spécifiée était trop longue ; la longueur maximale de la clé est de 767 octets". Cette erreur provient des limitations de MySQL sur la longueur des clés.

Comprendre la limite de longueur de clé

Dans les versions MySQL 5.6 et antérieures, la longueur de clé maximale est de 767 octets pour les tables InnoDB. Cette limite s'applique à la combinaison de tous les champs indexés au sein d'une clé unique. Pour les tables MyISAM, cette limite est de 1 000 octets.

Facteur d'encodage de caractères UTF-8

Lors de l'utilisation de l'encodage de caractères UTF-8 (utf8mb4), il est important de noter que il utilise jusqu'à quatre octets pour représenter un seul caractère. En conséquence, la longueur maximale du préfixe d'index de 767 octets est effectivement réduite à 191 caractères pour les champs codés en utf8mb4.

Solutions possibles

  • Réduire Taille du champ VARCHAR : Réduire la taille des champs VARCHAR peut réduire la clé totale longueur.
  • Partitionnez l'index : Créez un sous-ensemble de la colonne à indexer, comme le montre l'exemple :
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
Copier après la connexion
  • Réviser le modèle de données : Il peut être avantageux de revoir le modèle de données pour implémenter des règles métier sans dépasser celles de MySQL. limitations.

Dans MySQL version 5.7 et versions ultérieures, la longueur maximale de la clé a été augmentée à 3072 octets, offrant plus de flexibilité lors du traitement de clés volumineuses. Cependant, il est toujours important de prendre en compte les facteurs de codage des caractères et l'optimisation du modèle de données pour éviter les erreurs de longueur de clé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal