sql postgresql-9.2

¿Cuál es la longitud máxima de varchar(n) en postgresql 9.2 y cuál es la mejor opción para usar varchar(n) o texto?



postgresql-9.2 (2)

Según la documentación oficial ( http://www.postgresql.org/docs/9.2/static/datatype-character.html ):

En cualquier caso, la cadena de caracteres más larga posible que se puede almacenar es de aproximadamente 1 GB. (El valor máximo que se permitirá para n en la declaración del tipo de datos es menor que eso. No sería útil cambiar esto porque con las codificaciones de caracteres multibyte el número de caracteres y bytes puede ser bastante diferente. Si desea almacenar cadenas largas sin límite superior específico, use texto o caracteres que varíen sin un especificador de longitud, en lugar de establecer un límite de longitud arbitrario.)

La búsqueda en línea revela que el valor máximo permitido varía según las opciones de instalación y compilación; algunos usuarios reportan un máximo de 10485760 caracteres (10MiB exactamente, suponiendo una codificación fija de 1 byte por carácter).

Hola, estoy usando postgresql 9.2 y quiero usar varchar (n) para almacenar una cadena larga, pero no sé la longitud máxima de caracteres que admite varchar (n). y cuál es mejor usar, ¿podría por favor sugerirme? Gracias


tl; dr: 1 GB (cada carácter (realmente: punto de código) puede estar representado por 1 o más bytes, dependiendo de dónde se encuentren en un plano Unicode, suponiendo una base de datos codificada en UTF-8). Siempre debe usar el tipo de datos de text para datos de caracteres de longitud arbitraria en Postgresql ahora.

Explicación: varchar(n) y el text utilizan el mismo tipo de almacenamiento de fondo ( varlena ): una matriz de bytes de longitud variable con un contador de longitud de 32 bits. Para indexar el comportamiento, el text puede tener algunos beneficios de rendimiento. Se considera una práctica recomendada en Postgres usar el tipo de text para nuevos desarrollos; varchar(n) permanece por razones de soporte estándar de SQL. NB: varchar() (con paréntesis vacíos) es un alias específico de Postgres para text .

Véase también: http://www.postgresql.org/about/