Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

黄舟
Freigeben: 2017-03-04 15:06:47
Original
2071 Leute haben es durchsucht

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);
Nach dem Login kopieren

Zu diesem Zeitpunkt wird ein Fehler gemeldet:

Specified key was too long;max key length is 1000 bytes.
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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.
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie in der Innodb-Tabelle einen kombinierten Index:

‘key test_name3(name3(333))’
Nach dem Login kopieren

🎜>
Ändern Sie die Tabellenstruktur:

Zu diesem Zeitpunkt ist

< angegeben 🎜>
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);
Nach dem Login kopieren
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.
Nach dem Login kopieren
Nach dem Login kopieren

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).
Nach dem Login kopieren

warning:Specified key was too long;max key length is 767 bytes.
Nach dem Login kopieren
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!