IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Varchar ou TEXT ?


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Par défaut Varchar ou TEXT ?
    Bonjour,

    Je conçois actuellement une BDD Postgre. On m'impose de ne pas utiliser des VarChar puisque (et je le confirme) le type TEXT se resize automatiquement, il est énorme (1Go) et il ne prend pas plus de mémoire. D'un point de vue conceptuel, je trouve ça anormal puisque je souhaite avoir un ID d'une table de 20 caractères. Je trouverais ça plus "normal" d'avoir un champs VARCHAR(20). Cependant, dans le cas d'une évolution du soft, en laissant en TEXT, on n’aura pas besoin de retoucher à la base même si on augmente l'ID. Je confirme que la taille de la table deviendra très conséquente (plusieurs millers d'occurences) en l'espace de quelques mois.

    Ma question est : Sans parler conception, mais plutôt optimisation, est ce que le choix d'un type TEXT est identique, plus approprié ou moins approprié qu'un type VARCHAR ???

    A++

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par budtucker
    Bonjour,

    Je conçois actuellement une BDD Postgre. On m'impose de ne pas utiliser des VarChar puisque (et je le confirme) le type TEXT se resize automatiquement, il est énorme (1Go) et il ne prend pas plus de mémoire. D'un point de vue conceptuel, je trouve ça anormal puisque je souhaite avoir un ID d'une table de 20 caractères. Je trouverais ça plus "normal" d'avoir un champs VARCHAR(20). Cependant, dans le cas d'une évolution du soft, en laissant en TEXT, on n’aura pas besoin de retoucher à la base même si on augmente l'ID. Je confirme que la taille de la table deviendra très conséquente (plusieurs millers d'occurences) en l'espace de quelques mois.

    Ma question est : Sans parler conception, mais plutôt optimisation, est ce que le choix d'un type TEXT est identique, plus approprié ou moins approprié qu'un type VARCHAR ???

    A++
    VARCHAR est standard SQL, et non TEXT…

    si un jour la DB doit être migrée vers un autre SGBD, en utilisant TEXT vous perdrez peut-être une portabilité qui est triviale avec VARCHAR…

    le fait de ne pas spécifier de longueur max en utilisant TEXT, ne permet pas d'automatiser le check de longueur des champs dans une UI est se basant sur les méta informations du schéma… autrement dit : utiliser TEXT au lieu de VARCHAR ne va pas aider un éventuel outil RAD…

    (NB: varchar sans paramètre de longueur semble avoir une longueur max de 10 Mb)

  3. #3
    Membre expérimenté Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Par défaut
    Ok,

    Merci pour les infos. Je suis ok pour les problème de check. Mais d'un point de vus perf, il n'y a pas de différence ? En fait, je me bat pour faire accepter le VARCHAR à la place du Text. Non pas parceque il y a des contraintes quelconque, mais parce que d'un point de vue conceptuel, c'est pas du tout bon.

    Par exemple, je ne vais pas utiliser un type REAL pour stocker des entiers. C'est sans interêt. Mais on me l'impose donc, je suis contrains d'utiliser des TEXT.

    A+

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par budtucker
    Ok,

    Merci pour les infos. Je suis ok pour les problème de check. Mais d'un point de vus perf, il n'y a pas de différence ? En fait, je me bat pour faire accepter le VARCHAR à la place du Text. Non pas parceque il y a des contraintes quelconque, mais parce que d'un point de vue conceptuel, c'est pas du tout bon.

    Par exemple, je ne vais pas utiliser un type REAL pour stocker des entiers. C'est sans interêt. Mais on me l'impose donc, je suis contrains d'utiliser des TEXT.

    A+
    tant que les champs concernés ne doivent pas être indexés, cela ne doit pas changer grand chose…

  5. #5
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    Après avoir épluché la doc, je n'ai trouvé aucune différence de performances qui plaiderait en faveur de VARCHAR plutôt que de TEXT. Le choix de l'un ou l'autre se fera donc essentiellement en fonction de qu'a dit JeitEmgie concernant la conformité SQL.

    Citation Envoyé par JeitEmgie
    (NB: varchar sans paramètre de longueur semble avoir une longueur max de 10 Mb)
    Sauf erreur de ma part, varchar sans paramètre a la même limite que TEXT et CHAR, à savoir 1 Gb.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par GrandFather
    Sauf erreur de ma part, varchar sans paramètre a la même limite que TEXT et CHAR, à savoir 1 Gb.
    la limite est bien 1Gb dans toutes les version récentes…

    mais attention CHAR sans paramètre == CHAR(1)…
    donc sans paramètre CHAR != VARCHAR…

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/04/2014, 10h38
  2. transformer un champ varchar en text
    Par el_loco67 dans le forum Administration
    Réponses: 2
    Dernier message: 27/02/2013, 15h19
  3. changer un champ varchar en text d'une table
    Par lavercq dans le forum MySQL
    Réponses: 26
    Dernier message: 18/02/2009, 23h37
  4. différence entre varchar et text pour l'occupation mémoire
    Par champion dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/12/2004, 18h02
  5. Afficher un varchar complet dans un input text
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 25/06/2004, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo