[SQLSERVER] 'Varchar' us 'Char' ?

Bonjour,

je voudrais savoir si l’utilisation d’un champ varchar est vraiment oportun pour une colonne de longueur <10… Chez moi, personne n’est d’accord et ils vont en venir au mains si vous ne les départagez pas.

En gros, si j’ai une colonne qui va contenir
A6
A626
A6268
A6269
A63
A633

Est ce que c’est vraiment valable de faire un varchar(4) ?

si j’ai la même chose avec 3 caractere en plus, est ce vraiment valable de faire un varchar(7) ?

Merci

Et un int non? Parceque pour stocker des chiffres entiers, c’est encore ce qu’on fait de mieux B) ou alors c’est ton exemple qui m’enduit d’erreur (oh oui).

B)

oui, l’exemple est mauvais et n’est la que pour illustré (mal)…bon, je corrige avec un A devant…j’vous jure…des fois…faut tout faire sois même… On veut lancer un grand débat de société et puis, sbam…On nous ramene sur le plancher des vaches B)

[quote=“ElRed, post:3, topic: 32939”]B)

oui, l’exemple est mauvais et n’est la que pour illustré (mal)…bon, je corrige avec un A devant…j’vous jure…des fois…faut tout faire sois même… On veut lancer un grand débat de société et puis, sbam…On nous ramene sur le plancher des vaches B)[/quote]

Mais euh, vous hésitez entre varchar et quoi ? blob ? text ?

warlock varchar ! B) (explication pour ceux qui ont pas compris)

En fait ça dépend : c’est quoi la volumétrie ?
Plus c’est gros plus le varchar est ton ami.
Actuellement je bosse sur les bases qui dépassent le To : toutes les colonnes à contenu non-fixe sont en varchar histoire de gagner de la place.

Bishop : entre ‘Varchar’ et ‘char’ pour des colonnes de longueurs <10 (par exemple)
En fait, SqlServer 2000 indique que varchar est à prendre quand l’ecart entre la longueur max et min est tres important…sans plus de precision !

Pour un libellé, pas de soucis, mais pour des colonnes un peu plus légere…?

B) tu travailles sur les comptes de[TROLL] nos politiciens [/TROLL]/ SATAN / DIEU ( rayer la mention inutile ) ???

Le téra, ca peut aller vite…Il suffit d’etre coller derriere des systemes de télésurveillance qui sont bavard comme pas permis ou des distributeurs automatiques de billets…Quand les machines parlent aux machines…c’est pire que les filles !

Compilation des stocks et des ventes journalière des magasins d’un grand groupe français. On appelle ça un datawarehouse.
On garde plus d’une année d’historique pour certains.
Parfois les admins systèmes pleurent quand on leur demande de l’espace disque B)

et pour repondre à ma question…Une reference produit (par exemple, au hazard)…tu la met en varchar ?

Si la référence produit n’est pas de longueur fixe (comme dans ton exemple), oui je mets du varchar.

je sais pas, il suffit de savoir comment ca marche, non?

Je m’explique:

_Quand tu utilises char, la creation de la ligne dans la BDD est facile parce que c’est un emplacement de taille fixe: La gestion de celui ci est donc simplifie. En revanche, tu utilises a chaque fois N case pour chaque ligne, quelque soit la taille reelle de la ligne
_Quand tu utilises varchar, la creation de la ligne n’est pas plus complique a priori sauf qu’il doit faire une allocation de la taille exact du texte fourni en insert. Pas genant a priori mais si tu fais regulierement des update, l’espace memoire de la case doit etre realloue a chaque fois, et c’est couteux en CPU.

Du coup, en comprenant ca, tu peux en deduire des exemples de fonctionnements:
_J’ai besoin d’etre rapide (cote BDD) et j’ai plein de place disque -> char
_J’ai pas de contraintes de rapidite mais j’ai pas beaucoup de disque -> varchar
_Je dois etre rapide ET j’ai des contraintes de place disque -> t’es dans la merde.

En fait, le dernier cas peut se decomposer en plusieurs autres, notamment si tu fais beaucoup d’update, tu vas partir plutot vers un char pour des raisons de rapidite. Si c’est des valeurs relativement fixe, tu peux partir sur du varchar, ca sera long a l’insertion mais une fois fait, c’est fini.

Plus clair?

LoneWolf
Tant que tu mets pas une date dans le (var)char…

Côté pratique, pour éviter les batailles de styles, chez nous (gros groupe fr…anglais now ^^), à part pour les codes ISO (genre pays, monnaie,…) et les char(1) pour des statuts, on a banni les CHAR au profit des VARCHAR2. Oui, on est comme ça, pas de pitié(…)