|
|
|
Ich mache ggerade eine Testreihe mit MySQL auf einem Windows-Server 2003. Hoffe das gibt dir wenigstens einen Anhaltspunkt.
– MiW 10.09.2009
|
|
|
"50er"-Tabelle:
Typ Verbrauch
Daten 572,2 MiB
Index 98,0 MiB
Insgesamt 670,2 MiB
Zeilenlänge ø 60
Zeilengröße ø 70 Bytes
"255er"-Tabelle:
Typ Verbrauch
Daten 572,2 MiB
Index 98,0 MiB
Insgesamt 670,2 MiB
Zeilenlänge ø 60
Zeilengröße ø 70 Bytes
Update:
Alle Einer
50: 149.3374 sek. 0.5129 sek.
255: 160.6706 sek. 0.5219 sek.
Select ohne index (where x like y%):
Alle Einer
50: 0.0012 sek. 4.8711 sek.
255: 0.0014 sek. 4.9485 sek.
Insert eines Datensatzes:
50: 0.0004 sek.
255: 0.0004 sek.
Delete:
Alle Einer
50: 0.1053 sek. 4.8205 sek.
255: 0.1042 sek. 4.9260 sek.
|
|
| 1 |
Hallo,
im MySQL 5.0 Certification Study Guide wurde allerdings gesagt das ein Varchar Feld mit einer länge von z.B. 5 auch 6 Zeichen aufnehmen kann oder soviel wie man möchte. Varchar hat demnach keine echte Beschränkung, daher kann man diese auch weglassen. Bei Mysql und PGSql ist es aber, wie du schon gezeigt hast, völlig egal wie groß ein Varchar Feld definiert wird, die Performance leidet unmerklich darunter. – Lord_Pinhead 18.09.2009
|
ncharbzw.
nvarchargespeichert. Will man also mehrsprachige Anwendungen programmieren, sind char und varchar also tabu (oder man muss sich halt selbst um Konversionen kümmern, das hat aber ziemlich viele, nicht unbedingt technische Nachteile). Die maximal zulässige Zeichenlänge halbiert sich gegenüber varchar auf 4000 Zeichen. Man muss für Unicode keine text-Felder verwenden.
[n]textverwenden. BLOBs (Binary Large Objects) werden im SQL-Server in Überlauftabellen gespeichert, was sofort erkennen lässt: weniger effizient. Auf die ntext-Felder kann man allerdings Volltext-Indizes legen, die Abfragenotation ist etwas anders.
[n]varchar(MAX)Dieser Datentyp verhält sich wie ein (n)text, lässt sich aber wie ein normaler (n)varchar ansprechen. Soweit ich mich erinnere, gab es mal Beschwerden, dass in StoredProcedures kein [n]text als Parameter verwendet werden kann. Da dies mit [n]varchar(MAX) geht, schätze ich mal, dass dies die eigentliche Bestimmung ist.
|
|
|
|
|
kurz zur Anmerkung. Bei MSSQL-Server ist der varchar-Typ Standardmäßig "latin-1" dh. es können keine Unicode-Zeichen abgespeichert werden. Hierfür gibt es dann den NVarchar und NText Datentyp der Unicode-Zeichen speichern kann jedoch aber den dafür nötige Platz auch belegt.
– Floyd 10.02.2011
|