Excerpts from Miguel Angel Hernandez Moreno's message of mié nov 24 14:23:04 
-0300 2010:
> hola lista
> 
> disculpen alguien sabe cuanto pesa en bytes cada campo de la siguiente lista
> 
> character(4)
> integer

alvherre=# select pg_column_size(42::int);
 pg_column_size 
────────────────
              4
(1 fila)

alvherre=# select pg_column_size('abcd'::char(4));
 pg_column_size 
────────────────
              8
(1 fila)

alvherre=# select pg_column_size('a'::char(4));
 pg_column_size 
────────────────
              8
(1 fila)

alvherre=# select pg_column_size('a'::varchar(4));
 pg_column_size 
────────────────
              5
(1 fila)


etc.

Si estás tratando de determinar el ancho de un registro considera
alineamiento.  Por ej. un bool seguido de un int ocupan en total 8
bytes, debido a que el int tiene alineamiento 4.

Otro ejemplo que puede ser útil:
alvherre=# create table hdz (a bool, b int);
CREATE TABLE
alvherre=# insert into hdz values ('t', 42);
INSERT 0 1
alvherre=# select pg_column_size(hdz.*) from hdz;
 pg_column_size 
────────────────
             32
(1 fila)


Nota: cada tupla tiene un header de 23 bytes si mal no recuerdo (depende
de la versión) Agrega el tamaño del bitmap de nulos, de haberlo.

Más info en la sección "storage" del manual.

-- 
Álvaro Herrera <[email protected]>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a