Est-ce une taille déclarée de champ varchar ont un impact sur PostgreSQL?
-
21-08-2019 - |
Question
est VARCHAR (100) mieux que VARCHAR (500) d'un point de vue de la performance? Qu'en est-utilisation du disque?
En parlant de PostgreSQL aujourd'hui, pas une base de données un peu de temps dans l'histoire.
La solution
Ils sont identiques.
De la documentation PostgreSQL:
http://www.postgresql.org/docs/8.3/ statique / datatype-character.html
Astuce: Il n'y a pas de performance les différences entre ces trois types, indépendamment de la taille de stockage augmente lorsque en utilisant le type complété par des blancs, et quelques cycles supplémentaires pour vérifier la longueur lorsque stocker dans une contrainte de longueur colonne. Bien que le caractère (n) a avantages de performance dans une autre systèmes de bases de données, il n'a pas une telle avantages dans PostgreSQL. Dans la plupart situations texte ou caractère variable devrait être utilisé à la place.
Ici, ils parlent des différences entre char (n), varchar (n) et texte (= varchar (1G)). L'histoire officielle est qu'il n'y a pas de différence entre varchar (100) et texte (très grand varchar).
Autres conseils
TEXTE / est / la même chose que VARCHAR sans une longueur explicite, le texte
"L'exigence de stockage pour une courte string (jusqu'à 126 octets) est de 1 octet plus la chaîne réelle, qui comprend le remplissage de l'espace dans le cas de personnage. chaînes plus longues ont 4 octets frais généraux au lieu de 1. Les chaînes longues sont comprimés par le système automatiquement, de sorte que la physique exigence sur le disque pourrait être moins. Des valeurs très longues sont également stockées dans tables de fond afin qu'ils ne le font pas interférer avec un accès rapide à plus court les valeurs des colonnes. Dans tous les cas, la la plus longue chaîne de caractères possible que peut être stocké est d'environ 1 Go. "
fait référence à la fois VARCHAR et TEXT (depuis VARCHAR (n) est juste une version limitée de texte). Limiter votre VARCHARS a artificiellement aucun avantage de stockage ou de performance réelle (les frais généraux est basé sur la longueur réelle de la chaîne, et non pas la longueur de la varchar sous-jacente), sauf peut-être pour les comparaisons contre wildcards et regexes (mais au niveau où cela commence à la matière, vous devriez probablement regarder quelque chose comme le support d'indexation en texte intégral de PostgreSQL).
Il n'y a pas de différence entre et varchar(m)
varchar(n)
..
http://archives.postgresql.org/pgsql-admin/ 2008-07 / msg00073.php
Il y a une différence entre et text
si <=>, a une <=>. Construite en contrainte qui doit être vérifiée et est en fait un peu plus lent
http://archives.postgresql.org/pgsql-general/ 2009-04 / msg00945.php