Maison >base de données >tutoriel mysql >Une introduction détaillée au problème de longueur d'index des index MySQL

Une introduction détaillée au problème de longueur d'index des index MySQL

黄舟
黄舟original
2017-03-04 15:06:472126parcourir

La longueur de l'index créé dans chaque table de MySQL est limitée et il existe différentes restrictions sur les tables sous différents moteurs de stockage.

Dans la table MyISAM, lors de la création d'un index combiné, la longueur de l'index créé ne peut pas dépasser 1000. Notez que le calcul de la longueur de l'index ici est basé sur un scalaire sur la longueur définie par le champ table. Par exemple :

create table test(id int,name1 varchar(300),name2 varchar(300),name3 varchar(500))charset=latin1 engine=myisam;
create index test_name on test(name1,name2,name3);

A ce moment, une erreur est signalée :

Specified key was too long;max key length is 1000 bytes.

Modifier la structure de la table ; L'index est un index préfixe :

alter table test convert to charset utf8;
  create index test_name3 on test(name3).

La conclusion est : pour la table myisam, si vous créez un index combiné, l'index créé La somme des longueurs ne peut pas dépasser 1000 octets, sinon une erreur sera signalée et la création échouera pour l'index mono-colonne de myisam, la longueur maximale ne peut pas dépasser 1000 ; , sinon une alarme sera émise, mais la création est réussie et la création finale est un index de préfixe (les 333 premiers octets sont pris).
Specified key was too long;max key length is 1000 bytes.

Dans la table Innodb, créez un index combiné :

‘key test_name3(name3(333))’

🎜>
Modifiez la structure de la table :

À ce stade,

create table test1(id int,name1 varchar(300),name2 varchar(300),name3 varchar(500))charset=latin1 engine=innodb;
  create index test1_name on test(name1,name2,name3);
La conclusion est la suivante : pour créer un index combiné dans innodb , si la longueur de chaque colonne ne dépasse pas 767, la longueur totale de toutes les colonnes ne sera plus calculée. S'il y en a plus de 767, une alarme sera donnée. Index Finalement, la création est réussie, mais pour les colonnes dépassant 767. octets, un index de préfixe est pris ; pour l'index de colonne unique d'InnoDB, s'il dépasse 767, un avertissement est donné, et l'index final est créé avec succès, et un index de préfixe est pris (les 255 premiers octets sont pris).

warning:Specified key was too long;max key length is 767 bytes.

Ce qui précède est l'introduction spécifique au problème de longueur d'index de l'index MySQL. Pour plus de contenu connexe, veuillez faire attention au PHP. Site chinois (www.php .cn) !

alter table test1 convert to charset utf8;
  create index test1_name3 on test(name3).

warning:Specified key was too long;max key length is 767 bytes.
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