[Pgsql-ayuda] Consulta sobre velocidad

Alvaro Herrera alvherre@dcc.uchile.cl
Sat, 1 Feb 2003 17:02:01 -0300


On Sat, Feb 01, 2003 at 08:57:56PM +0100, Antonio Castro wrote:
> On Sat, 1 Feb 2003, Alvaro Herrera wrote:
> 
> > restantes son los bytes mismos.  Nota que el largo en bytes es distinto
> > del largo en caracteres (piensa en multibyte, que ahora viene activado
> > por defecto)
> 
> Aquí me hablas de algo que desconozco. He comprobado que char(1) y
> varchar(1)  ocupán lo mismo haciendo dos pruebas distintas en un par de
> tablas y comparandolas. Eso es lo que tu decías. Lo que me pregunto 
> ahora es si char(n) siempre ocupa n+4 bytes o si eso depende de la 
> configuración de la base de datos. Para varchar(n) me parece lógico
> que siempre sea así para char(n) no.

La diferencia de almacenamiento va a ser por ejemplo cuando tengas
varchar(20) y char(20) y almacenes un string de 10 letras.  Varchar va a
guardar las diez letras, mientras que char va a guardar las diez letras
y además diez espacios para completar.

Los cuatro bytes iniciales son para indicar el largo del string
almacenado.

Multibyte es un sistema para almacenar caracteres en lenguas que tienen
muchos caracteres distintos (japonés, chino, etc).  Cada carácter puede
ocupar más de un byte.

Disculpa que sea demasiado breve, pero estoy sólo de paso y mi tiempo es
limitado.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"El que vive para el futuro es un iluso, y el que vive para el pasado,
un imbécil" (Luis Adler, "Los tripulantes de la noche")