2009-08-26 9 views
7

Quelles sont les bonnes tailles pour les types de données dans SQL Server? Lors de la définition de colonnes, je vois des types de données avec des tailles de 50 comme l'une des tailles par défaut (par exemple: nvarchar (50), binaire (50)). Quelle est la signification de 50? Je suis tenté d'utiliser des tailles de pouvoirs de 2, est-ce mieux ou tout simplement inutile?Les types de données doivent-ils être des tailles de 2 dans SQL Server?

Mise à jour 1 Très bien, merci pour vos commentaires. Je voulais juste connaître la meilleure façon de définir la taille d'un type de données pour une colonne.

Répondre

4

La raison pour laquelle tant de champs ont une longueur de 50 est que par défaut SQL Server 50 comme la longueur pour la plupart des types de données où la longueur est un problème.Comme il a été dit, la longueur d'un champ doit être appropriée aux données qui y sont stockées, notamment parce qu'il y a une limite à la longueur de l'enregistrement unique dans SQL Server (environ 8000 octets). Il est possible de dépasser cette limite.

En outre, la longueur de vos champs peut être considérée comme faisant partie de votre documentation. Je ne sais pas combien de fois j'ai rencontré des programmeurs paresseux qui prétendent qu'ils n'ont pas besoin de documenter parce que le code est auto-documenté et ils ne prennent pas la peine de faire les choses qui rendraient le code auto-documenté.

3

La taille d'un champ doit être appropriée pour les données que vous prévoyez d'y stocker, les valeurs par défaut globales ne sont pas une bonne idée.

2

Cela dépend totalement de ce que vous stockez. Si vous avez besoin de caractères x, utilisez x pas de quantité arbitrairement prédéfinie.

6

Il n'y a aucune raison d'utiliser des puissances de 2 pour les performances, etc. La longueur des données doit être déterminée par les données stockées en taille.

5

Pourquoi ne pas les pouvoirs traditionnels de 2, moins 1, telle que 255 ...

Sérieusement, la longueur doit correspondre à ce que vous avez besoin et est adapté à vos données.

Rien d'autre: comment le client utilise, aligne 32 bits limite de mot, des puissances de 2, anniversaires, Scorpion montante dans Uranus, rouleau de dés ...

2

Il est une bonne idée que l'ensemble unique de ligne dans la page plusieurs fois sans laisser trop d'espace libre.

Une ligne ne peut pas s'étendre sur deux pages, une page a 8096 octets d'espace libre, donc deux lignes qui prennent 4049 octets occuperont chacune deux pages.

Voir docs sur la façon de calculer l'espace occupé par une ligne.

Notez également que VAR dans VARCHAR et VARBINARY est synonyme de « différents », donc si vous mettez une valeur 1 de -Byte dans une colonne de 50 -Byte, il prendra mais 1 octet.

4

Vous ne gagnerez rien en utilisant des puissances de 2. Faites les champs aussi longtemps que vos besoins professionnels l'exigent vraiment - laissez SQL Server gérer le reste. En outre, étant donné que la taille de la page SQL Server est limitée à 8 Ko (dont 8060 octets sont disponibles pour les données utilisateur), la longueur de vos chaînes de longueur variable est la plus faible possible (du point de vue des exigences). un plus.

Cette limite de 8 Ko est un paramètre système SQL Server fixe qui ne peut pas être modifié. Bien sûr, SQL Server peut gérer de nos jours plus de 8 Ko de données à la fois, en utilisant des pages dites de "débordement" - mais c'est moins efficace, donc essayer de rester dans les 8K est généralement une bonne idée.

Marc

Questions connexes