Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Quanto tamanho o valor Null leva no SQL Server


Se o campo for de largura fixa, armazenar NULL ocupará o mesmo espaço que qualquer outro valor - a largura do campo.

Se o campo for de largura variável, o valor NULL não ocupará espaço.

Além do espaço necessário para armazenar um valor nulo, há também uma sobrecarga por ter uma coluna anulável. Para cada linha, um bit é usado por coluna anulável para marcar se o valor dessa coluna é nulo ou não. Isso é verdade se a coluna for de comprimento fixo ou variável.

O motivo das discrepâncias que você observou nas informações de outras fontes:

  • O início do primeiro artigo é um pouco enganador. O artigo não está falando sobre o custo de armazenar um valor NULL, mas o custo de ter a capacidade para armazenar um NULL (ou seja, o custo de tornar uma coluna anulável). É verdade que custa algo em espaço de armazenamento para tornar uma coluna anulável, mas depois de fazer isso, é necessário menos espaço para armazenar um NULL do que para armazenar um valor (para colunas de largura variável).

  • O segundo link parece ser uma pergunta sobre o Microsoft Access. Não conheço os detalhes de como o Access armazena NULLs, mas não ficaria surpreso se fosse diferente do SQL Server.