Heim  >  Artikel  >  Datenbank  >  Eine ausführliche Einführung in das Problem der Indexlänge von MySQL-Indizes

Eine ausführliche Einführung in das Problem der Indexlänge von MySQL-Indizes

黄舟
黄舟Original
2017-03-04 15:06:472084Durchsuche

Die Länge des Index, der in jeder einzelnen Tabelle von MySQL erstellt wird, ist begrenzt, und es gibt unterschiedliche Einschränkungen für Tabellen unter verschiedenen Speicher-Engines.

In der MyISAM-Tabelle darf beim Erstellen eines kombinierten Index die Länge des erstellten Index 1000 nicht überschreiten. Beachten Sie, dass die Berechnung der Länge des Index hier skalarbasiert ist auf der durch das Tabellenfeld festgelegten Länge. Zum Beispiel:

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

Zu diesem Zeitpunkt wird ein Fehler gemeldet:

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

Ändern Sie die Tabellenstruktur. Der Index ist ein Präfixindex:

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

Die Schlussfolgerung lautet: Wenn Sie für die Myisam-Tabelle einen kombinierten Index erstellen, darf die Summe der Längen 1000 Bytes nicht überschreiten. Andernfalls wird ein Fehler gemeldet und die Erstellung schlägt fehl. Für den einspaltigen Index von Myisam darf die maximale Länge 1000 nicht überschreiten Andernfalls wird ein Alarm ausgegeben, aber die Erstellung ist erfolgreich und die endgültige Erstellung ist ein Präfixindex (die ersten 333 Bytes werden verwendet).
Specified key was too long;max key length is 1000 bytes.

Erstellen Sie in der Innodb-Tabelle einen kombinierten Index:

‘key test_name3(name3(333))’

🎜>
Ändern Sie die Tabellenstruktur:

Zu diesem Zeitpunkt ist

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);
Die Schlussfolgerung lautet: zum Erstellen eines kombinierten Index in innodb , wenn die Länge jeder Spalte 767 nicht überschreitet, wird die Gesamtlänge aller Spalten nicht mehr berechnet. Wenn es mehr als 767 gibt, wird ein Alarm ausgegeben. Schließlich ist die Erstellung erfolgreich, aber für Spalten, die 767 überschreiten Bytes wird ein Präfixindex verwendet. Wenn der Einzelspaltenindex von InnoDB 767 überschreitet, wird eine Warnung ausgegeben, der endgültige Index wird erfolgreich erstellt und ein Präfixindex wird verwendet (die ersten 255 Bytes werden verwendet).

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

Das Obige ist die detaillierte Einführung in das Indexlängenproblem des MySQL-Index. Für weitere verwandte Inhalte achten Sie bitte auf PHP Chinesische Website (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.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn