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);
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.