Il n'y a pas de différence, sous le capot c'est tout varlena
(tableau de longueur variable).
Consultez cet article de Depesz :http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/
Quelques faits saillants :
Pour résumer :
- char(n) – prend trop de place lorsqu'il s'agit de valeurs plus courtes que
n
(les complète enn
), et peut conduire à des erreurs subtiles en raison de l'ajout d'espaces de fin, et il est problématique de modifier la limite- varchar(n) - il est problématique de modifier la limite dans l'environnement en direct (nécessite un verrou exclusif lors de la modification de la table)
- varchar – tout comme le texte
- texte - pour moi un gagnant - sur (n) types de données parce qu'il n'a pas leurs problèmes, et sur varchar - parce qu'il a un nom distinct
L'article effectue des tests détaillés pour montrer que les performances des insertions et des sélections pour les 4 types de données sont similaires. Il examine également en détail les autres moyens de limiter la longueur en cas de besoin. Les contraintes ou domaines basés sur les fonctions offrent l'avantage d'une augmentation instantanée de la contrainte de longueur, et sur la base que la diminution d'une contrainte de longueur de chaîne est rare, depesz conclut que l'un d'entre eux est généralement le meilleur choix pour une limite de longueur.