From: | Horacio Miranda <hmiranda(at)gmail(dot)com> |
---|---|
To: | Christian Ortiz <cpalst(at)gmail(dot)com> |
Cc: | Jaime Casanova <jaime(at)2ndquadrant(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: optimizando Query |
Date: | 2010-05-13 04:02:28 |
Message-ID: | AANLkTikws0QMhXlruL7z8Decd3mlwsDGlTxAgkmJqdLE@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hay una tecnica que se llama vista materializada log. (eso es en Oracle).
Basicamente es util cuando debes tener un resumen por ejemplo mensual
de las sumas de operaciones de ventas por ejemplo.
Tabla Ventas (datos, date).
Todos los meses si necesitas un reporte mensual se puede hacer
Ventas_mensuales (sum(datos), mes) ; que consiste en la suma mensual
de cada mes.
Ahora si adicional a esto necesitas sumar los datos procesados del
dia. puede tomar las sumas hechas. y agregarlas las diarias. (de esa
forma se ahorra mucho tiempo).
Las vistas materializadas Log solo guardan los cambios en cada
registro según el criterio.
En Postgresql no tengo idea si hay algo como eso, pero se puede
programar un proceso con triggers para que simule eso.
2010/5/13 Christian Ortiz <cpalst(at)gmail(dot)com>:
>
>
> Lo habia hecho con una vista, pero lo que pones, esta genial. Muchas
> gracias.
>
> El 12 de mayo de 2010 19:15, Jaime Casanova <jaime(at)2ndquadrant(dot)com>
> escribió:
>>
>> 2010/5/12 Christian Ortiz <cpalst(at)gmail(dot)com>:
>> > Hola a todos,
>> >
>> > tengo q hacer un reporte, donde la consulta tiene varios campos que
>> > van
>> > hacer calculados algo asi
>> >
>> > select sum(a), sum(b), sum(a)*sum(b), sum(a)*sum(b)*sum(c) form aTable
>> >
>> > el problema esta en que las sumas se hacen a cada rato y no una sola vez
>> > por
>> > lo que con mucha data la consuta se hace terriblemente lenta
>> >
>> > probe con
>> >
>> > select sum(a) as X, sum(b) as Y, X*Y, X*Y*sum(c) form aTable
>> >
>> > pero no reconoce a X ni a Y
>> >
>>
>>
>> select x, y, x*y, x*y*z
>> from (select sum(a) as x, sum(b) as y, sum(c) as z from table)
>>
>> --
>> Jaime Casanova www.2ndQuadrant.com
>> Soporte y capacitación de PostgreSQL
>
>
>
> --
> Christian
>
--
Saludos,
Horacio Miranda Aguilera.
RedHat Certified Engineer
DBA Oracle - Large databases
+56 2 8974500
From | Date | Subject | |
---|---|---|---|
Next Message | Horacio Miranda | 2010-05-13 04:07:49 | Re: Consulta con logs para auditar |
Previous Message | Jaime Casanova | 2010-05-13 03:38:14 | Re: Consulta con logs para auditar |