On Thu, May 16, 2013 at 8:44 AM, Marco Aurelio <[email protected]>wrote:
> Caros, > > Gostaria da ajuda de vocês para fazer uma determinada query ficar mais > rápida. > > Query: > SELECT docnumero FROM frete01 WHERE docserie = ' U2' AND (codfilorig = 94 > OR codfilorig=95 OR codfilorig=98 OR codfilorig=99 OR codfilorig=100 OR > codfilorig=118 ) AND datalancam IS NOT NULL ORDER BY datalancam DESC, > docserie DESC, docnumero DESC LIMIT 1 > > Explain: > "Limit (cost=0.00..10.27 rows=1 width=23)" > " -> Index Scan Backward using frete01_x01 on frete01 > (cost=0.00..321102.79 rows=31270 width=23)" > " Index Cond: (docserie = ' U2'::bpchar)" > " Filter: (((codfilorig = 94::numeric) OR (codfilorig = > 95::numeric) OR (codfilorig = 98::numeric) OR (codfilorig = 99::numeric) OR > (codfilorig = 100::numeric) OR (codfilorig = 118::numeric)) AND (datalancam > IS NOT NULL))" > > Se eu tiver um indice por docserie + codfilorig ajuda ? > > Desde já agradeço a atenção recebida. > > De cara, troque o `codfilorig=X or codfilorig=Y...` por `codfilorig IN (X,Y,Z,...)`. Tem como mandar o EXPLAIN ANALYZE? E se possível usar o explain.depesz.com. O que nessa query é dinâmico e o que é estático? Exemplo: datalancam IS NOT NULL é sempre usado? Valeu. -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
