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.?
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.?
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 del text
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 un text
argumento o regresar text
. 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 uso text
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. ;-)
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.
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
character varying(n), varchar(n) variable-length with limit
text variable unlimited length
texto sin longitud declarada. No hay diferencias de rendimiento entre estos dos tipos.