ENUM ou TINYINT ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ENUM ou TINYINT ?

par mere-teresa » 31 oct. 2006, 12:38

Enfin, il y aurait peut-être lieu d'explorer la possibilité d'utiliser le type SET, moins bloquant que le type ENUM sauf erreur de mes sens abusés ;)
Il me semble que SET prend plus de place en stockage, et surtout permet de choisir plusieurs valeurs.
ex :
SET('A', 'B', 'C') => on peut avoir A, ou A & C
ENUM('A', 'B', 'C') => A ou B ou C

par Sined » 31 oct. 2006, 11:44

Et les transexuels ??? :-k
Comme tu peux le voir, Sined avait prévu ce cas : son enum contient 3 valeurs... ;)
Non il en contient 3 car si les personnes ne veulent pas remplir cette question :D
Après la question c'est le sexe et non le genre donc même les transexuels rentrent dans les catégories masculin, feminin...

Sinon je suis content, l'ambiance du forum est très bonne, on me répond vite et tout... Alors que sur d'autres forum c'est totalement différent!

par albat » 31 oct. 2006, 09:28

Et les transexuels ??? :-k
Comme tu peux le voir, Sined avait prévu ce cas : son enum contient 3 valeurs... ;)

par Ajoloca » 31 oct. 2006, 01:09

Re,
Et les transexuels ??? :-k
C'estait pour la blague!

par Sined » 31 oct. 2006, 01:06

Bon bun.. merci pour toutes ces réponses.
Finalement j'ai laissé le tinyint(1) mais j'avais justement un camp sexe et donc je l'ai remplacé par un :

Code : Tout sélectionner

ENUM('','masculin','feminin')
C'est bien plus logique que varchar(7)

par Cyrano » 30 oct. 2006, 20:41

Je crois que le 'TINYINT' peut prendre 256 valeurs (de -128 à +127)
et un 'UNSIGNED TINYINT' de 0 à +255
C'est juste, mere-teresa a bien écrit "qu'un TINYINT peut aller de...0 à 9", sous-entendu "mais n'est pas nécessairement limité à cette amplitude" :)

Enfin, il y aurait peut-être lieu d'explorer la possibilité d'utiliser le type SET, moins bloquant que le type ENUM sauf erreur de mes sens abusés ;)

par Ajoloca » 30 oct. 2006, 20:31

Re,
Et les transexuels ??? :-k

par albat » 30 oct. 2006, 20:28

Le type enum est l'ennemi juré de l'évolutivité.

L'utiliser pour mesurer l'échelle de Richter, par exemple, est maladroit
puisqu'on utilise désormais une échelle ouverte de Richter
qui a supprimé l'ancienne limite supérieure (égale à 9).

En revanche, un type enum peut très bien convenir à un type de données
dont l'échantillon de valeurs restera éternellement constant et limité.
Le sexe d'une personne, par exemple : Masculin/Féminin = 2 valeurs.



- Ah ouais ? Et Amanda Lear ? :twisted:
- Et merde...
](*,)

par Ajoloca » 30 oct. 2006, 19:53

Re,

Je crois que le 'TINYINT' peut prendre 256 valeurs (de -128 à +127)
et un 'UNSIGNED TINYINT' de 0 à +255

par mere-teresa » 30 oct. 2006, 18:50

Pour le moment, c'est strictement pareil pour les deux types. Quand tu cherches à optimiser tes tables MySQL te propose des ENUM, parce que toutes les valeurs lui sont connues d'avances...mais étant donné qu'un TINYINT peut aller de...0 à 9, si tu utilises toute la plage, c'est pareil.

par mcorgnet » 30 oct. 2006, 16:47

De fait, les deux utilisant des caractéristiques similaires, jouant sur un seul octet, mysql ira aussi vite avec l'un qu'avec l'autre.

par Ajoloca » 30 oct. 2006, 16:46

Bonjour,

Disons que le type 'ENUM' t'évite certains controles (plage de valeurs) mais te restraint aussi dans l'évolution.

Question rapidité, je ne suis pas sur que l'on puisse faire la difference entre l'un et l'autre surtout avec si peu de valeurs.

par Sined » 30 oct. 2006, 16:36

Ton lien ne m'aide pas vraiment...
Je sais juste maintenant que les deux forme, dans mon utilisation, prennent toutes les deux 1octet mais je ne sais pas laquelle est préférable ni laquelle et la plus rapide lors de l'écriture, lecture...

par mere-teresa » 30 oct. 2006, 16:26

ENUM ou TINYINT ?

par Sined » 30 oct. 2006, 15:42

Bonjour,
Je voudrais savoir si je devrais utiliser un ENUM ou un TINYINT pour une colonne qui admet comme valeurs 0,1,2,3,4,5,6,7,8 et 9

Code : Tout sélectionner

`nivo` tinyint(1) unsigned NOT NULL default '0',
ou

Code : Tout sélectionner

`nivo` enum('0','1','2','3','4','5','6','7','8','9') NOT NULL default '0',
Logiquement je devrais utiliser le ENUM je crois, mais lequels des deux est le plus rapide, et prennent-t'ils autant de place ?

Merci d'avance