Maison > base de données > tutoriel mysql > le corps du texte

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

黄舟
Libérer: 2017-03-04 15:06:47
original
2071 Les gens l'ont consulté

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);
Copier après la connexion

A ce moment, une erreur est signalée :

Specified key was too long;max key length is 1000 bytes.
Copier après la connexion
Copier après la connexion

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).
Copier après la connexion

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.
Copier après la connexion
Copier après la connexion

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

‘key test_name3(name3(333))’
Copier après la connexion

🎜>
Modifiez la structure de la table :

À ce stade,

< est donné 🎜>
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);
Copier après la connexion
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.
Copier après la connexion
Copier après la connexion

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).
Copier après la connexion

warning:Specified key was too long;max key length is 767 bytes.
Copier après la connexion
Copier après la connexion
Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!