Varchar Fields – Une puissance de deux est-elle plus efficace?

Est-il plus efficace d’utiliser un champ varchar taille est égale à deux contre un autre? Je pense que non, car pour SQL Server, la valeur par défaut est 50.

Cependant, j’ai entendu (mais jamais confirmé) que le dimensionnement des champs en tant que puissance de 2 est plus efficace car ils équivalent à des octets égaux, et les ordinateurs sont traités en bits & octets.

Donc, un champ déclaré comme varchar(32) ou varchar(64) a-t-il un réel avantage sur varchar(50) ?

Non.

Dans d’autres utilisations, il y a des avantages à utiliser des structures de deux tailles, principalement parce que vous pouvez en intégrer un nombre intéressant (puissance de deux) dans une autre structure de puissance de deux tailles. Mais cela ne s’applique pas à une taille de champ de firebase database.

Le seul pouvoir de double-dimensionnement lié à VARCHAR concerne le type exact de varchar (ou TEXT / BLOB dans certains dialectes SQL): s’il est inférieur à 256, il peut utiliser un seul octet pour indiquer la longueur. s’il est inférieur à 65536 (64 Ko), deux octets suffisent, trois octets fonctionnent jusqu’à 16777216 (16 Mo), quatre octets vont à 4294967296 (4 Go).

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

Bien sûr, c’est avant de penser à Unicode …

J’ai toujours pensé que les gens choisissaient des puissances de deux pour les champs de varchar parce que nous sums des geeks et c’est ce que nous faisons. Au moins c’est ce que j’ai toujours fait.

Le seul avantage tangible que vous obtiendrez en utilisant certaines longueurs maximales est l’espace de stockage requirejs pour le VARCHAR . Une longueur maximale supérieure à 255 nécessiterait un octet supplémentaire pour stocker la longueur de la valeur dans chaque ligne (et 2 octets supplémentaires pour des longueurs de 256 ^ 2 ou plus, etc.).

Pour SQL en général? Non, pour une implémentation spécifique, peut-être.

Ce qui est plus efficace n’est pas déterminé par une spécification (SQL n’est qu’une spécification), mais comment il est implémenté dans un certain SGBD.

Cela dépend de l’implémentation spécifique de la firebase database, mais je ne m’attendrais pas à cela. Il n’effectue généralement aucun calcul sur le nombre de caractères, de sorte qu’il ne devrait pas affecter les performances uniquement dans l’espace.