Todo lo que sé sobre sus diferencias es que varchar
tiene límite, y text
no lo es. La documentación no menciona esto.
¿Es esa realmente la única diferencia? ¿Ninguna consideración sobre el rendimiento, etc.?
database
postgresql
Eonil
fuente
fuente
Respuestas:
El trasfondo de esto es: el antiguo sistema Postgres usaba el lenguaje PostQUEL y usaba un tipo de datos llamado
text
(porque alguien pensó que era un buen nombre para un tipo que almacena texto). Luego, Postgres se convirtió para usar SQL como su lenguaje. Para lograr la compatibilidad de SQL, en lugar de cambiar el nombre deltext
tipo,varchar
se agregó un nuevo tipo . Pero ambos tipos usan las mismas rutinas C internamente.Ahora, hasta cierto punto y en algunos lugares,
text
está codificado como un tipo predeterminado, en caso de que no se pueda derivar nada más. Además, la mayoría de las funciones solo están disponibles como tomar untext
argumento o regresartext
. Los dos tipos son compatibles con binarios, por lo que la conversión es una operación trivial en tiempo de análisis. Pero el usotext
sigue siendo en general más natural para el sistema.Pero aparte de estos puntos finos, no hay una diferencia notable. Use el que le parezca más bonito. ;-)
fuente
Ver esta pregunta similar . La diferencia es que no hay diferencia, pero especificar una longitud máxima como la que
varchar(n)
generalmente no está a su favor, ya que usa más espacio pero no mejora el rendimiento.fuente
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
texto sin longitud declarada. No hay diferencias de rendimiento entre estos dos tipos.
fuente