Entao,
telemetria_geral=# SHOW cursor_tuple_fraction;
 cursor_tuple_fraction
-----------------------
 0.1
(1 registro)

Tempo: 54,662 ms

Esse detalhe nao sei o qual seria o melhor.

Quanto ao explain da query, nao vejo necessidade, pois , a mesma é
executada em um tempo aceitavel. O problema esta na hora do
           FETCH c_periodo INTO dt_pacote,id_motorista,id_veiculo,placa;

Essa parte demora muito.

2012/4/16 Flavio Henrique Araque Gurgel <[email protected]>

> On 16-04-2012 19:24, jorge sanfelice wrote:
> > SELECT d.dadtdt_pacote, d.dadtmotooid,d.dadtveioid,v.veiplaca
> >                          FROM dados_telemetria d
> >                          LEFT JOIN veiculo v ON d.dadtveioid = v.veioid
> > AND (v.veifilioid = _filial OR _filial = 0)
> >                          WHERE d.dadtdt_pacote >= (_data_inicio -
> > interval '1 day')
> >                          AND d.dadtdt_pacote <= (_data_fim + interval '1
> > day')
> >                          AND (d.dadtveioid = _veiculo OR _veiculo = 0)
> >                          AND ((d.dadtmotooid = _motorista OR
> > d.dadtmotooid = 0) OR _motorista IS NULL)
> >                          AND d.dadtveioid IN
> >                              (SELECT DISTINCT delveioid FROM delta WHERE
> >                                  deldatapacote >= (_data_inicio -
> > interval '1 day')
> >                                  AND deldatapacote <= (_data_fim +
> > interval '1 day')
> >                                  AND delmotooid = _motorista
> >                              )
> >                          ORDER BY d.dadtdt_pacote;
>
> Manda o resultado da consulta abaixo:
> EXPLAIN SELECT d.dadtdt_pacote, d.dadtmotooid,d.dadtveioid,v.veiplaca
>                          FROM dados_telemetria d
>                         LEFT JOIN veiculo v ON d.dadtveioid = v.veioid
> AND (v.veifilioid = _filial OR _filial = 0)
>                         WHERE d.dadtdt_pacote >= (_data_inicio -
> interval '1 day')
>                         AND d.dadtdt_pacote <= (_data_fim + interval '1
> day')
>                         AND (d.dadtveioid = _veiculo OR _veiculo = 0)
>                         AND ((d.dadtmotooid = _motorista OR
> d.dadtmotooid = 0) OR _motorista IS NULL)
>                         AND d.dadtveioid IN
>                             (SELECT DISTINCT delveioid FROM delta WHERE
>                                 deldatapacote >= (_data_inicio -
> interval '1 day')
>                                 AND deldatapacote <= (_data_fim +
> interval '1 day')
>                                 AND delmotooid = _motorista
>                             )
>                         ORDER BY d.dadtdt_pacote;
>
> E desta:
> SHOW cursor_tuple_fraction;
>
> Por favor;
>
> []s
>
> Flavio Henrique A. Gurgel
> Consultor e Instrutor 4Linux
> Tel: +55-11-2125-4747
> www.4linux.com.br
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a