Champ SET ou INT dans une BDD ??

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 : Champ SET ou INT dans une BDD ??

par Felix » 27 mars 2007, 17:53

Merci bien pour vos réponse.

Effectivement il s'agissait bien d'un champ de type ENUM et non SET dans mon premier post.

Donc, je resterai avec des champs de type ENUM lorsque j'aurais seulement peu de valeurs numériques et distinctes dans ce champ

Merci encore pour les renseignements.

Cordialement,
Felix

par zeus » 27 mars 2007, 14:34

Le fonctionnement interne d'un ENUM est identique à celle d'un TINYINT.

La création d'une colonne ENUM crée une liste textuelle avec correspondance d'un code. Lors de la recherche sur un texte, on recherche le code correspondant et on recherche sur ce code numérique, donc sur un INTEGER ...

C'est assez bien expliqué dans la doc

par naholyr » 27 mars 2007, 14:18

Attention ! Ne pas confondre le type ENUM et le type SET, ils n'ont pas le même objectif : un champ de type ENUM prend une valeur parmi les possibles, un champ de type SET prend une ou plusieurs valeurs parmi le possibles.

Pour la consistance des données et la cohérence du schéma, on utilisera plutôt un champ ENUM dès lors qu'on a un nombre très limité de valeurs possibles. Cela permet aussi de mettre des noms compréhensibles aux valeurs possibles. À ce propos il ne faut pas se gêner vu que ça prend toujours la même taille : que ton champ ENUM soit ('true','false'), ('oui','non') ou ('anticonstitutionnellement','tarabiscotément'), la taille de ta table sera la même ;)

Certains sont adeptes du TINYINT, paraitrait-il que la recherche est moins couteuse avec un entier qu'un ENUM, je n'en suis pas convaincu.

Voir la doc :
http://dev.mysql.com/doc/refman/5.0/fr/enum.html
http://dev.mysql.com/doc/refman/5.0/fr/set.html

Champ SET ou INT dans une BDD ??

par Felix » 27 mars 2007, 13:53

J'ai un champ qui ne peut prendre que 2 valeurs numeriques distincts (0 ou 1).

Et je me posais la question de savoir si ce champ doit etre de type SET ou INT.

Peut etre que mysql à une preference ou de meilleurs performances avec l'un des 2 types de champs cités plus haut.

Car pour le type SET, les valeurs doivent être traitées comme chaines de caractères alphanumériques malgrés que mes valeurs soient numeriques.

Alors que choisir, le but étant d'avoir une séléction le plus rapide possible sur ce champ.

Cordialement,
Milou