14 votes

Les valeurs nulles économisent-elles de l'espace de stockage?

Possible Duplicate:
Espace utilisé par les valeurs nulles dans la base de données

Qu'est-ce qui est plus efficace en termes d'espace de stockage ?

  • Une colonne int nullable remplie de valeurs nulles.
  • Une colonne int remplie de zéros.

Je sais qu'une colonne nullable nécessite 1 bit supplémentaire d'information pour stocker son état nul, mais est-ce que les valeurs nulles évitent à la base de données d'allouer 32 bits pour un int qui est nul ?

(la sémantique de null et la signification de null ne sont pas importantes pour cette question)

14voto

Mark Byers Points 318575

Pour les champs de largeur fixe comme les entiers nuls, l'espace de stockage requis est toujours le même, que la valeur soit nulle ou non.

Pour les champs nuls de largeur variable, la valeur 'NULL' prend zéro octet d'espace de stockage (en ignorant le bit pour stocker si la valeur est nulle ou non).

5voto

Randy Minder Points 19262

Si vous utilisez SQL Server 2008 et que vous prévoyez d'avoir un nombre significatif de valeurs NULL dans les colonnes, je vous suggère de étudier les colonnes éparses. Elles sont optimisées pour stocker des valeurs NULL.

4voto

Mitch Wheat Points 169614

SQL Server 2008 a introduit colonnes clairsemées pour les colonnes qui sont principalement NULL.

Une colonne CLAIRSEMEE pour une ligne, qui est NULL, utilise 0 bits de stockage. Mais vous payez une pénalité de 4 octets s'il y a une valeur.

2voto

Paul Tomblin Points 83687

0 n'est pas nul. Si vous n'avez pas de valeur pour le champ, ne mettez pas de zéro dedans! Je ne peux pas vous dire combien de fois j'ai rencontré des bogues qui sont essentiellement impossibles à corriger car nous n'avons aucun moyen de savoir si les zéros dans une base de données de production étaient de vrais zéros ou des nuls fictifs. Adoptez les nuls - oui, cela nécessite un peu plus de codage, mais adoptez-les quand même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X