web-dev-qa-db-fra.com

Quelle est la longueur maximale de varchar (n) dans postgresql 9.2 et quelle est la meilleure méthode pour utiliser varchar (n) ou text?

Bonjour, j’utilise postgresql 9.2 et j’aimerais utiliser varchar (n) pour stocker des chaînes longues, mais je ne connais pas la longueur maximale de caractères prise en charge par varchar (n). et lequel est préférable d'utiliser alors pourriez-vous s'il vous plaît me suggérer? Merci

40
KRISHNA

tl; dr: 1 Go (chaque caractère (en réalité: point de code) peut être représenté par un ou plusieurs octets, selon l’emplacement où ils se trouvent sur le plan unicode - en supposant une base de données codée UTF-8). Vous devez toujours utiliser le type de données text pour les données de caractères de longueur arbitraire dans Postgresql maintenant.

Explication: varchar(n) et text utilisent le même type de stockage de base (varlena): un tableau d'octets de longueur variable avec un compteur de longueur de 32 bits. Pour le comportement d'indexation, text peut même présenter des avantages en termes de performances. Dans Postgres, il est considéré comme une pratique exemplaire d'utiliser text pour les nouveaux développements. varchar(n) reste pour des raisons de support standard SQL. NB: varchar() (avec des crochets vides) est un alias spécifique à Postgres pour text.

Voir aussi: http://www.postgresql.org/about/

41
cowbert

Selon la documentation officielle ( http://www.postgresql.org/docs/9.2/static/datatype-character.html ):

Dans tous les cas, la chaîne de caractères la plus longue possible pouvant être stockée est d'environ 1 Go. (La valeur maximale autorisée pour n dans la déclaration du type de données est inférieure à celle. Cela ne serait pas utile de le changer car avec les codages de caractères multi-octets, le nombre de caractères et d'octets peut être très différent. Si vous souhaitez enregistrer longues chaînes sans limite supérieure spécifique, utilisez un texte ou un caractère variant sans spécificateur de longueur, plutôt que de définir une limite de longueur arbitraire).

La recherche en ligne révèle que la valeur maximale autorisée varie en fonction des options d'installation et de compilation. Certains utilisateurs indiquent un maximum de 10485760 caractères (10 Mo exactement, en supposant un codage fixe à 1 octet par caractère).

Par "les options d'installation et de compilation", je veux dire que vous pouvez toujours créer PostgreSQL à partir du code source. Avant de compiler PostgreSQL pour créer votre propre serveur de base de données, vous pouvez configurer la manière dont il stocke le texte afin de modifier la quantité maximale que vous pouvez stocker. cela signifie alors que vous pourriez avoir des problèmes si vous essayez d'utiliser vos fichiers de base de données avec une version "normale" et non personnalisée de PostgreSQL.

18
Dai