Bonjour,
Je me pose une question sur les index de type UNIQUE.
Ma servant habituellement à éviter tout doublon dans certaines de mes tables, la longueur de la clé appliquée à certains champs attire mon attention.
Imaginons une table (codage en UTF8_général_ci) possédant un champ de type VARCHAR (500). Même si la longueur n'importe normalement plus dans VARCHAR, je prévois d'y stocker des chaines de longueur comprises entre 450 et 500 caractères (soit 1000 o max en UTF8).
Il parait logique d'appliquer la longueur de clé correspondant à ce champ de 500 caractères.
SQL bloque une 1ere fois et pour cause : longueur maximale de 767 o soit 383 caractères UTF8.
Abaissons donc la longueur de la clé à 380 caractères.
Ca ne correspond plus à mon cas puisque mes chaines vont faire entre 450 et 500 caractères.
J'ai fais le test et m'aperçoit qu'au moment d'utiliser INSERT avec des chaines proches (différences sur les derniers caractères), MySQL affirme trouver un doublon alors qu'il n'en est rien.
Quelle est la logique derrière cette limitation à 767 octets des longueur de clé? Peut-on passer outre?
Merci pour vos réponses.
Partager