¿Qué diferencia hay entre el tipo "varchar" y "text" en PostgreSQL?


15

Todo lo que sé sobre sus diferencias es que varchartiene límite, y textno lo es. La documentación no menciona esto.

¿Es esa realmente la única diferencia? ¿Ninguna consideración sobre el rendimiento, etc.?


1
Esto realmente debería migrarse a los administradores de bases de datos . No tiene nada que ver con la administración del servidor.
Evan Carroll

Respuestas:


22

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 texttipo, varcharse agregó un nuevo tipo . Pero ambos tipos usan las mismas rutinas C internamente.

Ahora, hasta cierto punto y en algunos lugares, textestá 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 textargumento 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 textsigue 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. ;-)


Oh buena explicación. Usaré 'texto' porque no me importa la compatibilidad que bloquea el beneficio de un producto específico. ¡Gracias!
Eonil

1

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.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.