Maison  >  Article  >  base de données  >  Pourquoi les index MySQL VARCHAR sont-ils limités à 255 caractères en UTF8 ?

Pourquoi les index MySQL VARCHAR sont-ils limités à 255 caractères en UTF8 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 15:46:16921parcourir

Why Are MySQL VARCHAR Indexes Limited to 255 Characters in UTF8?

Longueur de l'index MySQL VARCHAR

Problème :

Dans MySQL, les colonnes varchar avec un préfixe les index supérieurs à 255 caractères ne sont pas utilisés pour trier les données, bien qu'ils aient une taille d'index suffisante.

Réponse :

MySQL suppose 3 octets par caractère utf8 dans les calculs d'index. Avec une limite d'index de 767 octets, cela se traduit par un maximum de 255 caractères.

Explication :

  • Les tailles d'index MySQL sont spécifiées en octets, même pour types de données non binaires comme VARCHAR.
  • La taille maximale de l'index de préfixe par colonne est de 767 octets.
  • Pour les colonnes utf8, MySQL suppose que chaque caractère occupe 3 octets.
  • Par conséquent , 767/3 = 255 caractères est la longueur d'index maximale pour les colonnes utf8.

Considérations supplémentaires :

  • Les contraintes uniques sur les colonnes utf8 sont limitées à 255 caractères car la valeur entière de la cellule est indexée.
  • Les index réguliers peuvent être appliqués aux colonnes de plus de 255 caractères, mais n'indexeront que les 255 premiers caractères.
  • Si la plupart des caractères de la sont ASCII (caractères de 1 octet), il est possible d'insérer plus de 255 caractères dans l'index, mais les calculs de MySQL n'en tiennent pas compte.
  • Avec l'option innodb_large_prefix activée, la limite d'index peut être augmentée à 3072 octets pour les tables utilisant les formats de lignes DYNAMIQUE ou COMPRESSÉ.

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!

Déclaration:
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