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

Anwendungsbeispiele für React Hooks

Inhaltsverzeichnis Ein einfaches Komponentenbeisp...

So erstellen Sie eine Tabelle in MySQL und fügen Feldkommentare hinzu

Code und Beispiele direkt posten #Schreiben Sie K...

So sichern Sie die MySQL-Datenbank regelmäßig automatisch

Wir alle wissen, dass Daten unbezahlbar sind. Wen...

Docker nginx implementiert einen Host zum Bereitstellen mehrerer Sites

Die virtuelle Maschine, die ich von einer bestimm...

Installation von CUDA10.0 und Probleme in Ubuntu

Die Entsprechung zwischen der Tensorflow-Version ...

js implementiert Tabellen-Drag-Optionen

In diesem Artikelbeispiel wird der spezifische JS...

Detaillierte Beschreibung der chinesischen ffmpeg-Parameter

Details zu den Parametern der Version FFMPEG 3.4....

Einführung in die Generierung von Kubernetes-Zertifikaten mit OpenSSL

Kubernetes unterstützt drei Arten der Authentifiz...

Implementierung zum Hinzufügen von Bemerkungsinformationen zu MySQL

Vorwort Einige Leute haben mich in diesen Tagen u...

Eine ausführliche Einführung in React-Referenzen

1. Was ist Refs wird in Computern als Resilient F...