In den alten Tagen war die Verwendung von varchar
over char
ein großes Nein Nein, da das varchar
auf einer anderen Seite als der Rest der Zeile gespeichert wurde. Ist dies bei SQL Server 2008 noch heute der Fall? Werde ich einen Speicher- / Leistungsgewinn sehen, wenn ich 1-3 varchar(5)
Spalten in char(5)
Spalten in einer Tabelle mit ändere ?
a) sagen wir 2.000.000 Zeilen b) wenn eine der varchar
Spalten Teil von Indizes / Primärschlüsseln ist
sql-server
sql-server-2008
Carlo V. Dango
quelle
quelle
Antworten:
Sie verwechseln Text / varchar (max) (LOB-Typen) mit varchar (n) / char (n)
Andernfalls ist dies ein schlechtes Design und viel verschwendeter Speicherplatz, wenn Sie char (1000) und nicht varchar (1000) verwenden und die durchschnittliche Datenlänge beispielsweise 42 beträgt.
quelle
Es ist schwierig, Sie über bestimmte Leistungssteigerungen oder Treffer zu informieren, ohne mehr über Ihr Schema zu wissen. Im Allgemeinen möchten Sie jedoch den Datentyp so definieren, dass er mit Ihren Daten übereinstimmt. Wenn Sie eine feste Breite benötigen (z. B. wissen Sie, dass Sie immer fünf Zeichen haben), sollten Sie char (5) verwenden. Wenn Sie eine variable Datenmenge haben, sollten Sie varchar (5) verwenden.
Je mehr Daten für SQL auf eine Seite passen, desto besser ist Ihre Leistung.
quelle
Soweit ich weiß, hat SQL Server nie varchar- oder nvarchar-Datentypen außerhalb der Zeile gespeichert. Text und NText sind unterschiedlich. Es gibt ein paar zusätzliche Bits, die für eine Spalte mit variabler Breite gespeichert werden, aber das war es auch schon.
quelle