Bonjour , je voudrais savoir comment avoir en octet le poid que prend en mémoire ces 2 champs avec une requête sql pour comparer le comportement d'un char et varchar . Merci

J'ai inserer une image local "(file:///C:/Users/HsDemoniacal/Pictures/char.png)" mais sa marche pas en markdown.

16 réponses


Psylozoff
Réponse acceptée

un champ char(x) prends x octets en mémoire, quoi que tu y mettes... Si tu mets "machin" dans un champs char(100) ça prend 100 octets!

Un champ varchar(x) prends juste ce qu'il faut + quelques octets en fonction de l'implémentation du sgbd..! Si tu mets "machin" dans un varchar(100) ça prend 6 + n octets! "n" dépend de la façon dont ce type de champ est géré! C'est variable... En général c'est entre 2 et 8...

En pratique, si tu sais que ton champ contiendra des textes de longueurs quasiment identiques, opte pour un char! Et si ça varie beaucoup, go varchar!

Consulte la doc du sgbd que tu utilises...

SAMO
Auteur

Merci beaucoup pour ta réponse , c'est plus claire maintenant pour moi . Le problème e la doc de mysql c'est que c'est en englais ...

SAMO
Auteur

et aussi c'est quoi la syntaxe a suivre pour inserer une image en local avec Markdown ?
J'ai inserer une image local "(file:///C:/Users/HsDemoniacal/Pictures/char.png)" mais sa marche pas en markdown.

Salut,

Tu peux pas insérer des images locales. Il faut qu'elles soient hébergées sur internet ;)

Si tu mets "machin" dans un varchar(100) ça prend 6 + n octets! "n"

Pas vraiment, ça dépend de l'encodage de ta base ;)

SAMO
Auteur

A voila merci je me suis casser la tête a chercher le combo

SAMO
Auteur

@Balsakup On parlait de la différence entre char et varchar, hein... Peu importe l'encodage, une unité de caractère prend autant de place pour char et varchar!

Bah si, il veut savoir la taille en octet, l'encodage compte

je voudrais savoir comment avoir en octet le poid que prend en mémoire ces 2 champs

-- L'architecte

L'encode n'a rien à voir avec les points de différences qui existent entre char et varchar...

Surtout que tu balances juste ça en mode "hey hey", alors qu'au lieu de faire le kéké tu aurais pu simplement corriger l'équation : (nb_char * char_size) + quelques octets, dans le cas d'un varchar..!

Sauf que, c'est bien beau, mais ça complexifie le bordel pour rien! Ce qu'il demande n'est pas forcément ce qu'il veut! En général, quand quelqu'un pose ce genre de question c'est juste un débutant qui veut connaitre la différence entre les deux options...

Sauf que, c'est bien beau, mais ça complexifie le bordel pour rien!

Il pose une question précise, je vais pas lui répondre à côté. C'est à lui de bien poser sa question.

C'est peut être complexe, mais au moins il sera au courant de cette notion, je participe à sa connaissance :*

L'encode n'a rien à voir avec les points de différences qui existent entre char et varchar...

Je ne parlais pas de l'encodage au niveau différence entre char et varchar, mais de la place prise par un charactère dans le SGBD.

C'est ce que je suis en train de dire... L'encodage n'a rien à voir avec le sujet... De quel encodage pourrais-tu parler autre que "l'encodage"..? Quel rapport avec la différence entre char et varchar..?! C'est quoi cette précision X-D

Entre latin1_general_ci et utf8_general_ci le poid en octet de certains caractères ne seront pas le même, sa question initiale porte sur le poid en octet.

T'as du mal, hein...

Sa demande concerne la comparaison du comportement de char et varchar!!! L'encodage, il s'en branle très probablement ;-p Et entre latin1 qui est de l'ascii et utf8 qui est de l'unicode 8 bits, les caractères feront tous... 8 bits!! Donc, aucune différence :-s Essaie encore... Bien que ce soit inutile...

Ton premier lien pourrait éventuellement être intéressant vu qu'il traite du sujet qui reste "la différence de comportement de char et varchar"! Par contre, le deuxième est HS... En tout cas, bravo, tu as enfin donné une info en rapport avec le sujet :-)