sql >> Database >  >> RDS >> Sqlserver

Hoeveel grootte Null-waarde inneemt in SQL Server

Als het veld een vaste breedte heeft, neemt het opslaan van NULL dezelfde ruimte in als elke andere waarde - de breedte van het veld.

Als het veld een variabele breedte heeft, neemt de NULL-waarde geen ruimte in beslag.

Naast de ruimte die nodig is om een ​​null-waarde op te slaan, is er ook een overhead voor het hebben van een null-kolom. Voor elke rij wordt één bit per null-kolom gebruikt om aan te geven of de waarde voor die kolom null is of niet. Dit geldt ongeacht of de kolom een ​​vaste of variabele lengte heeft.

De reden voor de discrepanties die u hebt waargenomen in informatie uit andere bronnen:

  • Het begin van het eerste artikel is een beetje misleidend. Het artikel heeft het niet over de kosten van het opslaan van een NULL-waarde, maar over de kosten van het hebben van de mogelijkheid om een ​​NULL op te slaan (d.w.z. de kosten om een ​​kolom nullable te maken). Het is waar dat het wat opslagruimte kost om een ​​kolom nullable te maken, maar als je dat eenmaal hebt gedaan, kost het minder ruimte om een ​​NULL op te slaan dan om een ​​waarde op te slaan (voor kolommen met variabele breedte).

  • De tweede link lijkt een vraag te zijn over Microsoft Access. Ik weet niet hoe Access NULL's opslaat, maar het zou me niet verbazen als het anders is dan SQL Server.



  1. Fix "Rekenkundige overloopfout bij het converteren van int naar gegevenstype numeriek" in SQL Server

  2. SQLite-vallen en valkuilen

  3. MySQL-status weergeven - actieve of totale verbindingen?

  4. Hoe u uw ProxySQL kunt bewaken met Prometheus en ClusterControl