MySQL VARCHAR-Indexlänge
Problem:
In MySQL Varchar-Spalten mit einem Präfix Indexe mit mehr als 255 Zeichen werden trotz ausreichender Indexgröße nicht zum Sortieren von Daten verwendet.
Antwort:
MySQL geht bei Indexberechnungen von 3 Bytes pro utf8-Zeichen aus. Bei einem Indexlimit von 767 Byte entspricht dies einem Maximum von 255 Zeichen.
Erklärung:
- MySQL-Indexgrößen werden in Bytes angegeben, auch für nicht-binäre Datentypen wie VARCHAR.
- Die maximale Präfixindexgröße pro Spalte beträgt 767 Bytes.
- Bei utf8-Spalten geht MySQL davon aus, dass jedes Zeichen 3 Bytes belegt.
- Daher , 767 / 3 = 255 Zeichen ist die maximale Indexlänge für utf8-Spalten.
Zusätzliche Überlegungen:
- Eindeutige Einschränkungen für utf8-Spalten sind begrenzt auf 255 Zeichen, da der gesamte Zellenwert indiziert wird.
- Normale Indizes können auf Spalten mit mehr als 255 Zeichen angewendet werden, indizieren jedoch nur die ersten 255 Zeichen.
- Wenn die meisten Zeichen in der Spalte sind ASCII (1-Byte-Zeichen). Es ist möglich, mehr als 255 Zeichen in den Index einzufügen, die Berechnungen von MySQL berücksichtigen dies jedoch nicht.
- Wenn die Option innodb_large_prefix aktiviert ist, kann das Indexlimit auf erhöht werden 3072 Bytes für Tabellen mit den Zeilenformaten DYNAMIC oder COMPRESSED.
Das obige ist der detaillierte Inhalt vonWarum sind MySQL-VARCHAR-Indizes in UTF8 auf 255 Zeichen beschränkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!