Re: Vistas Materializadas Vs, Vistas Comunes

From: Raúl Andrés Duque <ra_duque(at)yahoo(dot)com(dot)mx>
To: "Arturo Munive" <arturomunive(at)gmail(dot)com>, "Gabriel Hermes Colina Zambra" <hermeszambra(at)yahoo(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Vistas Materializadas Vs, Vistas Comunes
Date: 2007-12-27 13:42:15
Message-ID: 00c101c8488e$4bd957b0$0200a8c0@Principal
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


----- Original Message -----
From: "Arturo Munive" <arturomunive(at)gmail(dot)com>
To: "Gabriel Hermes Colina Zambra" <hermeszambra(at)yahoo(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Wednesday, December 26, 2007 9:44 AM
Subject: Re: [pgsql-es-ayuda] Vistas Materializadas Vs, Vistas Comunes

>
>> Yo tengo una base en postgresql desde el 2003 con
>> movimientos de varios locales y puedo hacer la
>> consulta por local o global. Claro no exceden las
>> 300000 lineas el cabezal de los documentos y las
>> 500000 lineas los documentos, por ahora me va muy bien
>> con esto.
>>
>> Si tu queres me mostras la estructura yo la lleno y
>> hacemos alguna prueba, te parece ?
> La estructura estoy definiéndola ahora (el proyecto aun no lo acabo)
> pero tentativamente es esto:
>
> CREATE TABLE "public"."mov_almacen" (
> id SERIAL,
> id_producto INTEGER,
> id_almacen INTEGER,
> cantidad NUMERIC(10,3),
> fecha DATE,
> entrada BOOLEAN,
> PRIMARY KEY(id)
> ) WITHOUT OIDS;
>
> -- entrada indica si es TRUE que es ingreso al almacén de lo contrario es
> una salida del mismo
>
> lo que quiero es ver la cantidad de productos que existen actualmente en
> el almacén
>
> Una primera aproximacion sería:
>
> SELECT
> mov.id_producto,
> sum(
> case
> when not mov.entrada then (-mov.cantidad)
> else mov.cantidad end )
> FROM
> mov_almacen AS mov
> WHERE
> mov.id_almacen = 1
> GROUP BY
> mov.id_producto
>
> Donde simplemente sumo las cantidades de los movimientos y si son salidas
> las resto (uso su valor negativo).
>
>
> ahora bien si yo quiero saber cuanto del producto 1 me queda en el almacén
> 3 por ejemplo tendría que recorrer toda la tabla sumando y restando para
> saber cuanto queda.
>
> Cual sería otra solución simple??
>
>

Algo que he utilizado es implementar tablas de resumen, por ejemplo con
saldos por año/mes/día, etc. y con cada operación se actualiza. Por ejemplo
si requieres el saldo a una fecha especifica (y no tienes saldos por día)
arrancas el saldo del mes anterior y acumulas los movimientos del mes hasta
el día que requieras. El inconveniente de este tipo de estructuras es que
debes mantenerlas actualizadas por aplicación o triggers de la DB y algunas
veces se descuadran (aunque no debería pasar), por lo que tienes que crear
procesos de recalculo de estos acumulados.

Atentamente,

RAUL DUQUE
Bogotá, Colombia

>
>
>
> --
> TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá
> leerlo

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alejandro D. Burne 2007-12-27 13:42:22 Re: AYUDA CON RESTORE DE BASE DE DATOS
Previous Message Alvaro Herrera 2007-12-27 13:32:53 Re: Misma tabla dos bases de datos