Sollten Datentypen Größen von 2 in SQL Server sein?

7

Was sind gute Größen für Datentypen in SQL Server? Wenn ich Spalten definiere, sehe ich Datentypen mit einer Größe von 50 als eine der Standardgrößen (zB: nvarchar (50), binary (50)). Was ist die Bedeutung von 50? Ich bin versucht, Größen von 2 zu verwenden, ist das besser oder einfach nutzlos?

Update 1 Alles klar, danke für eure Beiträge. Ich wollte nur wissen, wie man die Größe eines Datentyps für eine Spalte am besten definiert.

    
burnt1ce 26.08.2009, 14:34
quelle

7 Antworten

4

Der Grund dafür, dass so viele Felder eine Länge von 50 haben, ist, dass SQL Server standardmäßig 50 als Länge für die meisten Datentypen verwendet, bei denen die Länge ein Problem darstellt.

Wie schon gesagt, sollte die Länge eines Feldes den Daten entsprechen, die dort gespeichert werden, nicht zuletzt, weil die Länge eines einzelnen Datensatzes in SQL Server begrenzt ist (es sind ~ 8000 Bytes). Es ist möglich, über diese Grenze hinaus zu blasen.

Auch die Länge Ihrer Felder kann als Teil Ihrer Dokumentation angesehen werden. Ich weiß nicht, wie oft ich faule Programmierer getroffen habe, die behaupten, dass sie nicht dokumentieren müssen, weil der Code selbstdokumentiert und dann nicht die Dinge tut, die den Code selbst dokumentieren würden. p>     

Jeff Hornby 26.08.2009, 14:48
quelle
6

Es gibt keinen Grund, Potenzen von 2 für die Performance usw. zu verwenden. Die Datenlänge sollte durch die Größe der gespeicherten Daten bestimmt werden.

    
kemiller2002 26.08.2009 14:41
quelle
5

Warum nicht die traditionellen Potenzen von 2, minus 1 wie 255 ...

Im Ernst, die Länge sollte Ihren Anforderungen entsprechen und für Ihre Daten geeignet sein.

Nichts anderes: Wie der Client es benutzt, richtet sich an 32-Bit-Wortgrenzen, Potenzen von 2, Geburtstage, Skorpion steigt in Uranus, würfelt ...

    
gbn 26.08.2009 14:42
quelle
4

Sie werden nichts gewinnen, wenn Sie Potenzen von 2 verwenden. Machen Sie die Felder so lange, wie es Ihre Geschäftsanforderungen wirklich erfordern - überlassen Sie SQL Server den Rest.

Da die SQL Server-Seitengröße auf 8 KB begrenzt ist (davon sind 8060 Byte für Benutzerdaten verfügbar), wird die Anzahl der Strings mit variabler Länge so klein wie möglich gehalten (aber so lange wie erforderlich, aus Anforderungssicht) Plus.

Dieses Limit von 8 KB ist eine feste SQL Server-Systemeinstellung, die nicht geändert werden kann.

Natürlich kann SQL Server heutzutage mehr als 8K Daten in einer Zeile verarbeiten, indem er sogenannte "Überlauf" -Seiten verwendet - aber es ist weniger effizient, also ist es generell eine gute Idee, innerhalb von 8K zu bleiben.

Marc

    
marc_s 26.08.2009 14:44
quelle
3

Die Größe eines Felds sollte für die Daten geeignet sein, die Sie dort speichern möchten. Globale Standardwerte sind keine gute Idee.

    
Lazarus 26.08.2009 14:35
quelle
2

Das hängt ganz davon ab, was Sie speichern. Wenn Sie x Zeichen benötigen, verwenden Sie x nicht einen beliebig vordefinierten Betrag.

    
Johnno Nolan 26.08.2009 14:36
quelle
2

Es ist eine gute Idee, dass die ganze Reihe mehrmals in die Seite passt, ohne zu viel freien Platz zu lassen.

Eine Zeile kann nicht zwei Seiten umfassen, eine Seite hat 8096 bytes freien Speicherplatz, so dass zwei Zeilen, die 4049 bytes belegen, jeweils zwei Seiten belegen.

Siehe Dokumente zur Berechnung des von einer Person belegten Speicherplatzes Reihe.

Beachten Sie auch, dass VAR in VARCHAR und VARBINARY für "variierend" steht. Wenn Sie also einen 1 -Byte-Wert in eine 50 -Byte-Spalte eingeben, dauert es aber 1 Byte.

    
Quassnoi 26.08.2009 14:42
quelle

Tags und Links