Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/04/2007, 16h20   #1
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
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++
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2007, 09h20   #2
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 293
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 293
Points : 2 741
Points : 2 741
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)
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 10h48   #3
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
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+
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 11h22   #4
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 293
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 293
Points : 2 741
Points : 2 741
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…
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 11h40   #5
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
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
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 12h38   #6
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 293
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 293
Points : 2 741
Points : 2 741
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…
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h33.


 
 
 
 
Partenaires

Hébergement Web