Ich habe eine große Tabelle mit etwa 10 Spalten. 4 von ihnen bleiben meistens null. Ich habe eine Abfrage, die einen Nullwert hat, der eine beliebige Größe oder keine Größe in Bytes annimmt. Ich habe einige Artikel gelesen, von denen einige sagen:
http://www.sql-server-citation.com/2009/12/common-mistakes-in-sql-server-part-4.html
Es gibt ein Missverständnis, dass wenn wir die NULL-Werte in einer Tabelle haben, sie keinen Speicherplatz belegen. Tatsache ist, dass ein NULL-Wert Platz belegt - 2 Bytes
SQL: Verwenden von NULL-Werten im Vergleich zu Standardwerten
Ein
NULL
Wert in Datenbanken ist ein Systemwert, der ein Byte Speicherplatz beansprucht und angibt, dass ein Wert nicht vorhanden ist, im Gegensatz zu einem Leerzeichen oder Null oder einem anderen Standardwert.
Können Sie mich bitte bezüglich der Größe des Nullwerts führen?
quelle
byte
(typischerweise 8 Bit). In Wirklichkeitbit
nimmt a einbyte
. Tolle Antwort Mark: +1.Die folgende Verbindung , behauptet , dass , wenn die Spalte mit variabler Länge ist, das heißt
varchar
dannNULL
nimmt 0 Byte (plus 1 Byte wird auf Flag verwendet , ob der Wert istNULL
oder nicht):Der obige Link sowie der folgende Link behaupten, dass für Spalten mit fester Länge, dh
char(10)
oderint
, ein Wert vonNULL
die Länge der Spalte belegt (plus 1 Byte, um zu kennzeichnen, ob dies der Fall istNULL
oder nicht):Beispiele:
char(10)
auf setzenNULL
, belegt es 10 Bytes (auf Null gesetzt)int
benötigt 4 Bytes (ebenfalls auf Null gesetzt).varchar(1 million)
Einstellung aufNULL
0 Bytes (+ 2 Bytes)Hinweis: Bei einer leichten Tangente entspricht die Speichergröße von
varchar
der Länge der eingegebenen Daten + 2 Byte.quelle
Von diesem Link :
quelle
Das Speichern eines NULL-Werts benötigt keinen Platz.
Dies ist ein Missverständnis - das sind 2 Bytes pro Zeile , und ich bin mir ziemlich sicher, dass alle Zeilen diese 2 Bytes verwenden, unabhängig davon, ob es nullbare Spalten gibt.
Hierbei handelt es sich um Datenbanken im Allgemeinen, nicht speziell um SQL Server. SQL Server verwendet kein 1-Byte zum Speichern von NULL-Werten.
quelle