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