Analyse des Prinzips der MySQL-Indexlängenbeschränkung

Analyse des Prinzips der MySQL-Indexlängenbeschränkung

Dieser Artikel stellt hauptsächlich die Analyse des Prinzips der MySQL-Indexlängenbeschränkung vor. Der Artikel stellt es anhand von Beispielcode sehr detailliert vor, was einen gewissen Referenzlernwert für jedermanns Studium oder Arbeit hat. Freunde, die es brauchen, können darauf zurückgreifen.

Index

TextField unterstützt keine Indizierung.

MySQL hat eine Beschränkung für die Länge von Indexfeldern

Die Länge jeder Indexspalte der InnoDB-Engine ist auf 767 Byte begrenzt und die Gesamtlänge aller Indexspalten kann 3072 Byte nicht überschreiten.

Die Länge jeder Indexspalte der MyISAM-Engine ist auf 1000 Byte begrenzt und die Gesamtlänge aller Indexspalten kann nicht größer als 1000 Byte sein.

Die maximale Länge von varchar bezieht sich auf die Zeichenlänge. Wenn der Datenbankzeichensatz UTF-8 ist, belegt ein Zeichen 3 Bytes. Daher darf die Länge eines von der InnoDB-Engine erstellten einspaltigen Indexes beim UTF-8-Zeichensatz 255 Zeichen nicht überschreiten.

Unterschiedliche MySQL-Versionen führen zu unterschiedlichen Indexlängenbeschränkungen

In MySQL Version 5.5 wurde innodb_large_prefix eingeführt, um große Präfixindizes aus Kompatibilitätsgründen mit früheren Versionen von InnoDB zu deaktivieren, die keine großen Indexschlüsselpräfixe unterstützen.

Durch Aktivieren von innodb_large_prefix kann die Länge eines einzelnen Indexes auf 3072 Bytes begrenzt werden (die Gesamtlängenbeschränkung eines kombinierten Indexes beträgt jedoch weiterhin 3072 Bytes). Wenn diese Option deaktiviert ist, beträgt die Längenbeschränkung eines einzelnen Indexes 767 Bytes.

In MySQL 5.5 und MySQL 5.6 ist innodb_large_prefix standardmäßig deaktiviert und in MySQL 5.7 und höher standardmäßig aktiviert

In MySQL 8.0 wurde innodb_large_prefix entfernt

Aus diesem Grund kann ich auf meinem Computer (MySQL 8.0) einen Index mit einer Länge von 1024 Zeichen (3072 Bytes im UTF-8-Zeichensatz) erstellen, aber nicht auf dem Server (MySQL 5.5).

Skript zum Testen der Indexlängenbeschränkung:

Test verwenden;
Tabelle löschen, falls vorhanden, test_index_len;
Tabelle erstellen 
test_index_len(long_char varchar(1025) Primärschlüssel) ENGINE=InnoDB charset=utf8;
Test verwenden;
Tabelle löschen, falls vorhanden, test_index_len;
Tabelle erstellen 
test_index_len(
  long_char varchar(24),
  origin_str varchar(1000),
  Schlüssel Testindex (long_char, origin_str)) ENGINE=InnoDB Zeichensatz=utf8;

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Analyse der MySQL-Indexstruktur
  • Detaillierte Analyse von MySQL-Indextransaktionen
  • Detaillierte Analyse der MySQL-Indexdatenstruktur
  • Detaillierte Analyse der MySQL-Indizes
  • Analyse der Rolle von MySQL-Indizes

<<:  Vue implementiert den Operationscode zum Klicken auf eine Schaltfläche zum Herunterladen einer Datei (Backend-Java).

>>:  IIS7 IIS8 Reverse-Proxy-Regeln schreiben, installieren und konfigurieren

Artikel empfehlen

CSS-Code zur Unterscheidung von IE8/IE9/IE10/IE11 Chrome Firefox

Das Debuggen der Website-Kompatibilität ist wirkl...

Informationen zur Bildlaufleiste in HTML/Bildlaufleiste entfernen

1. Die Farbe der Bildlaufleiste unter xhtml Im Ori...

Lösung zum Vergessen des Root-Passworts von MySQL5.7 unter Windows 8.1

【Hintergrund】 Mir ist beim Lernen kürzlich etwas ...

Zusammenfassung der Tipps zur CSS-Verwendung

Vor Kurzem habe ich mit der Aktualisierung meines ...

Detailliertes Beispiel zum Entfernen doppelter Daten in MySQL

Detailliertes Beispiel zum Entfernen doppelter Da...

CSS3-Countdown-Effekt

Ergebnisse erzielen Implementierungscode html <...

Der Aufruf der Suchmaschine auf der Seite erfolgt am Beispiel von Baidu

Heute ist mir plötzlich eingefallen, dass es cool ...

So installieren Sie Grafana und fügen Influxdb-Überwachung unter Linux hinzu

Installieren Sie Grafana. Die offizielle Website ...

W3C Tutorial (12): W3C Soap Aktivität

Bei Webdiensten geht es um die Kommunikation zwis...

Beispielschritte zur Verwendung von AntV X6 mit Vue.js

Inhaltsverzeichnis 0x0 Einführung 0x1 Installatio...