Martín sería lo siguiente:

Query:
explain analyze
  with CTE as (
   select saldo_contable, saldo_contable * tasa_interes /
(sum(saldo_contable) over ()) as tasa
    from rm_cuentas_vistas where fecha_snapshot = '2014-03-17'
) select 'Depósitos a la vista' as partida, sum(saldo_contable) as
total_saldo, round(sum(tasa),4) as total_tasa from CTE
;

Explain analyze

           QUERY PLAN

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost=166739.23..166739.25 rows=1 width=52) (actual
time=4324.532..4324.532 rows=1 loops=1)
   CTE cte
     ->  WindowAgg  (cost=0.00..135537.58 rows=1248066 width=11) (actual
time=1580.507..2891.732 rows=1043549 loops=1)
           ->  Index Scan using idx_rm_cuentas_vistas_fecha_snapshot on
rm_cuentas_vistas  (cost=0.00..113696.43 rows=1248066 width=11) (actual
time=64.275..741.755 rows=1043549 loops=1)
                 Index Cond: (fecha_snapshot = '2014-03-17'::date)
   ->  CTE Scan on cte  (cost=0.00..24961.32 rows=1248066 width=52) (actual
time=1580.522..3412.303 rows=1043549 loops=1)
 Total runtime: 4336.805 ms

http://explain.depesz.com/s/cBOB


Evidentemente hay un overhead en las agregaciones pero quería empezar por
resolver lo más básico.



2014-05-05 10:44 GMT-04:30 Martín Marqués <[email protected]>:

> El día 5 de mayo de 2014, 10:18, Alfredo Rico <[email protected]>
> escribió:
> > Martín, en efecto todas las operaciones se hacen en el motor.
> >
> > Que otra información sugieres que pueda suminsitrar a la lista?. En
> esencia
> > considero que si logro reducir la consulta simple al máximo posible, el
> > overhead de las operaciones de agregado puede ser tolerable.
>
> Toda la información sería el explain de la consulta final, no de una parte.
>
> Saludos,
>
> --
> Martín Marqués http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>



-- 
Saludos Cordiales.-
Alfredo Rico.
San Cristóbal - Venezuela.

Responder a