Re: Tamaño de Campo UUID

2018-11-02 Thread Alvaro Herrera
Alfredo Guzman Pacherres escribió:
> Estimados:
> 
> Tengo las siguientes definiciones de índices, es posible optimizarlos:
> 
> ON bcamovil.tp_pagina_log USING btree
> (bin_process COLLATE pg_catalog."default", bin_adq COLLATE 
> pg_catalog."default", bin_relay COLLATE pg_catalog."default", cod_tran 
> COLLATE pg_catalog."default", cod_pag COLLATE pg_catalog."default")
> TABLESPACE bcamovii;
> 
> ON bcamovil.tp_pagina_log USING btree
> (bin_process COLLATE pg_catalog."default", bin_adq COLLATE 
> pg_catalog."default", bin_relay COLLATE pg_catalog."default", id_sesion 
> COLLATE pg_catalog."default", cod_tipo COLLATE pg_catalog."default")
> TABLESPACE bcamovii;
> 
> ON bcamovil.tp_pagina_log USING btree
> (bin_process COLLATE pg_catalog."default", bin_adq COLLATE 
> pg_catalog."default", bin_relay COLLATE pg_catalog."default", fec_pag COLLATE 
> pg_catalog."default")
> TABLESPACE bcamovii;
> 
> Me refiero a disminuirlos?

Probablemente sea buena idea sacarles el prefijo común ... yo dejaría
algo así para ver qué sucede (claro que habría que saber más acerca de
las consultas, la tabla, los datos, para poder dar opiniones
inteligentes)

 ON bcamovil.tp_pagina_log USING btree
 (bin_process COLLATE pg_catalog."default", bin_adq COLLATE 
pg_catalog."default", bin_relay COLLATE pg_catalog."default")

 ON bcamovil.tp_pagina_log USING btree
 (cod_tran COLLATE pg_catalog."default", cod_pag COLLATE 
pg_catalog."default")
 
 ON bcamovil.tp_pagina_log USING btree
 (id_sesion COLLATE pg_catalog."default", cod_tipo COLLATE 
pg_catalog."default")
 
 ON bcamovil.tp_pagina_log USING btree
 (fec_pag COLLATE pg_catalog."default")

Eso de que tengas los COLLATE en cada campo sugiere que usaste tipo
texto en todas las columnas, que no necesariamente es muy buena idea ...

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



RE: Tamaño de Campo UUID

2018-11-02 Thread Alfredo Guzman Pacherres
Estimados:

Tengo las siguientes definiciones de índices, es posible optimizarlos:

ON bcamovil.tp_pagina_log USING btree
(bin_process COLLATE pg_catalog."default", bin_adq COLLATE 
pg_catalog."default", bin_relay COLLATE pg_catalog."default", cod_tran COLLATE 
pg_catalog."default", cod_pag COLLATE pg_catalog."default")
TABLESPACE bcamovii;

ON bcamovil.tp_pagina_log USING btree
(bin_process COLLATE pg_catalog."default", bin_adq COLLATE 
pg_catalog."default", bin_relay COLLATE pg_catalog."default", id_sesion COLLATE 
pg_catalog."default", cod_tipo COLLATE pg_catalog."default")
TABLESPACE bcamovii;

ON bcamovil.tp_pagina_log USING btree
(bin_process COLLATE pg_catalog."default", bin_adq COLLATE 
pg_catalog."default", bin_relay COLLATE pg_catalog."default", fec_pag COLLATE 
pg_catalog."default")
TABLESPACE bcamovii;

Me refiero a disminuirlos?

Saludos

Alfredo Guzmán



-Mensaje original-
De: Francisco Olarte [mailto:fola...@peoplecall.com] 
Enviado el: viernes, 27 de abril de 2018 03:21 a.m.
Para: Edwin De La Cruz 
CC: Alvaro Herrera ; Lista Postgres ES 

Asunto: Re: Tamaño de Campo UUID

Edwin:

2018-04-26 21:39 GMT+02:00 Edwin De La Cruz :

> Se me hizo que en algún lugar leí que había unos tipos de datos que 
> reservaban una cantidad de bits fijo, haya o no datos.

 Parcialmente correcto si recuerdo bien. Me parece que Pg usa un BITMAP para 
marcar que campos son nulos DE LOS QUE PUEDEN SER NULOS.

Para los NOT NULL se ahorra el bit, y reserva el espacio, pero en ese caso no 
puede "no haber datos". Si son campos de tamaño fijo es posible que reserve un 
espacio fijo.

Si te defiendes con el Ingles, prueba a leer alrededor de esto:
https://www.postgresql.org/docs/10/static/storage-page-layout.html#HEAPTUPLEHEADERDATA-TABLE

En resumen, para lo que querias incialmente.

Si el campo es NULL - 1 bit de 'is-null' mas lo que ocupe el dato, que sera 
constante o variable, si esta presente. Como el bit SIEMPRE viene, ahorras 
espacio con los NULL.

Si el campo es NOT NULL - lo que ocupe, Pg no pone el bit.

Francisco Olarte.



Re: Ayuda con armar saldos

2018-11-02 Thread Guillermo E. Villanueva
Está probado y anda:
create function fntasas() returns
table (tid integer, ttasa decimal(10,8), lx decimal(10,8), dx
decimal(10,8)) as
$$
declare
lx1 decimal(10,8):= 1.0;
dx1 decimal(10,8):= 0.0;
lr_registro RECORD;
begin
FOR lr_registro IN select id,tasa from tasas ORDER BY id LOOP
tid := lr_registro.id;
ttasa := lr_registro.tasa;
lx := lx1;
dx := ttasa * lx1;
return next;
lx1:= lx - dx;
END LOOP;
return;
end;
$$
LANGUAGE plpgsql;

llamás a la función con
select * from fntasas();

El mar., 30 oct. 2018 a las 15:58, Jorge Barzola ()
escribió:

> Hola estimados:
>
> Necesito armar el siguiente cuadro:
>
> id  | tasa   | lx  | dx
> 
> 65 | 0.013670563 | 1. | 0.01367056
> 66 | 0.015125920 | 0.98632944 | 0.01491914
> 67 | 0.016741070 | 0.97141030 | 0.01626245
> 68 | 0.018533249 | 0.95514785 | 0.01770199
> 69 | 0.020521473 | 0.93744586 | 0.01923777
> 70 | 0.022726715 | 0.91820809 | 0.02086785
>
> - Los datos de id y tasa son fijo (estan en una tabla).
> - Siempre en la columna lx en el primer registro sera 1.
> - La columna dx se obtiene de tasa * lx
> - En la columna lx, apartir del segundo registro el resultado se obtiene
> de (lx - dx) de un registro anterior.
>
> Alguna idea por favor.
>
> Saludos.
>
>