dedlfix: Varchar immer aufs höchste setzen?

Beitrag lesen

Tach!

Obwohl man bei Varchar jede beliebige Bytezahl benutzen kann, bleibe ich immer auf der Binären Schiene hängen. Geht euch das auch so?
Gerade weil man belibig lang werden kann, braucht man doch kein Binärfeld dazu?

Er meinte 2, 4, 8, 16, 32, 64, 128, 256, ...

Ich meine, Varchar holt sich doch sowieso nur soviele Bytes wie es braucht?
Meines Wissens braucht ein Index auf so ein Feld für jeden Eintrag die maximale definierte Länge, auch wenn der eigentliche Eintrag viel kleiner ist.

Diesen Satz versteh ich nicht.

Wenn du ein indiziertes Feld hast, ist es also nicht klug das maximal groß zu machen.

Die Maximallänge eines Index ist 1000 Bytes bei MyISAM und 767 Bytes bei InnoDB, das sind dann 333 beziehungsweise 255 Zeichen bei UTF-8-Feldern (und noch etwas weniger bei utf8mb4). Es ist auch nicht in jedem Fall erforderlich, dass der Index über das gesamte Feld geht. Beispielsweise kann man den Index begrenzen, wenn sich die Daten bereits in den ersten x Zeichen/Bytes unterscheiden. Das spart Plattenplatz und ist schneller beim INSERT. Insofern muss man von Fall zu Fall entscheiden, was für diesen klug ist und was nicht.

dedlfix.