MySQL 5.1: varchar oder text als Spaltentyp?

DarthShader

Erfahrenes Mitglied
Hallo,

mir fällt z.Z. die Entscheidung schwer, in welchen Fällen ich "varchar", und wann ich "text" als Spaltentyp nehmen soll.

Die technischen Unterschiede sind mir klar, das kann man ja in der Doku nachlesen. "varchar" kann man auch begrenzen, "text" nicht. Damals war "varchar" mal auf 255 Zeichen begrenzt, heute nicht mehr. Auch wird, soweit ich weiß, die Spaltensuche nicht beschleunigt, wenn ich ein begrenztes "varchar" statt einem "text" nehme (da die tatsächliche Länge wohl noch mitgespeichert wird).

Kann mir jemand ein paar Tipps oder "Richtlinien" geben, wann ich was verwende?


Vielen Dank für Eure Hilfe!
 
Hallo,

soweit ich weiß, ist varchar nicht mehrzeilig. Text schon. Deshalb würde ich es von den zeilen abhängig machen.
 
Was genau bedeutet, varchar ist mehrzeilig? Ich könnte ja den String "Erste Zeile\nZweite Zeile" in ein varchar Feld schreiben, dann hab ichs auch mehrzeilig, mehr macht "text" sicher auch nicht.
 
Hallo,

die Dokumentation hat etwas zum Unterschied zwischen TEXT und VARCHAR zu sagen.

Grüße, Matthias

Speziell diese Zeilen:

http://dev.mysql.com/doc/refman/5.1/de/blob.html hat gesagt.:
Ähnlich können Sie eine TEXT-Spalte auch als VARCHAR-Spalte betrachten. BLOB und TEXT unterscheiden sich wie folgt von VARBINARY bzw. VARCHAR:

Bei Indizes in BLOB- und TEXT-Spalten müssen Sie eine Länge für das Indexpräfix angeben. Bei CHAR und VARCHAR ist die Präfixlänge optional. Siehe auch Abschnitt 7.4.3, „Spaltenindizes“.

BLOB- und TEXT-Spalten können keine DEFAULT-Werte haben.

LONG und LONG VARCHAR lassen sich dem Datentyp MEDIUMTEXT zuordnen. Grund hierfür sind Kompatibilitätsaspekte. Wenn Sie das Attribut BINARY mit einem TEXT-Datentyp verwenden, wird der Spalte die binäre Sortierung des Spaltenzeichensatzes zugewiesen.
 

Neue Beiträge

Zurück