Question

est-il plus efficace d'utiliser un champ de varchar taille comme une puissance de deux par rapport à un autre numéro? Je pense pas, parce que pour SQL Server la valeur par défaut est 50.

Cependant, j'ai entendu (mais jamais confirmé) que le dimensionnement des champs comme une puissance de 2 est plus efficace parce qu'ils assimilent à même octets, et traiter les ordinateurs en bits et octets.

Alors, est-un champ déclaré comme varchar(32) ou varchar(64) ont un avantage réel sur varchar(50)?

Était-ce utile?

La solution

Non.

Dans d'autres utilisations, il y a des avantages à utiliser des structures avec une puissance de deux dimensions, la plupart du temps parce que vous pouvez adapter à une belle (puissance de deux) nombre de ceux-ci à l'intérieur une autre structure de pouvoir-deux entreprises. Mais cela ne vaut pas un DB FieldSize.

La seule puissance de deux enfants-dimensionnement lié à Varchars est sur le type de varchar exact (ou TEXT / blob dans certains dialectes SQL): si elle est inférieure à 256, il peut utiliser un seul octet pour indiquer la longueur. si elle est inférieure à 65536 (64 Ko), deux octets suffisent, trois octets travaillent jusqu'à 16.777.216 (16 Mo), quatre octets vont à 4.294.967.296 (4 Go).

En outre, on peut affirmer que VARCHAR(50) est tout aussi cher que VARCHAR(255), car tous deux ont besoin n + 1 octets de stockage.

Bien sûr, qui est avant de penser Unicode ...

Autres conseils

Je pensais que les gens choisissent toujours des puissances de deux pour les champs varchar parce que nous sommes geeks et c'est ce que nous faisons. Au moins, c'est ce que je l'ai toujours fait.

Le seul avantage tangible que vous verrez d'utiliser certaines longueurs maximales est l'espace de stockage requis pour l'VARCHAR. Une longueur maximale au-dessus de 255, il faudrait un octet supplémentaire pour stocker la longueur de la valeur de chaque rangée (et 2 octets pour une longueur de 256 ^ 2 ou plus supplémentaires et ainsi de suite).

Pour SQL en général? Non. Pour une mise en œuvre spécifique, peut-être.

Ce qui est plus efficace n'est pas déterminé par une spécification (SQL est juste une spécification), mais la façon dont il est mis en œuvre dans un certain SGBD.

Il dépend de la mise en œuvre de base de données spécifique, mais je ne m'y attendais pas à. Il n'est pas effectuer de calculs sur le nombre de caractères, en général, il ne devrait pas affecter les performances -. Que l'espace

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top