> A tabela contém muitos registros, por isso a criação de indice.
> Estou usando indice composto (para a linha grifada em resposta anterior).
> Passar a estrutura da tabela, fica complicado.
> A consulta eh a seguinte:
> SELECT count(distinct(rdelrde)), count(tid), sum(tvlr)
> FROM titulo, rdel, grrde, grp, csk
> WHERE
> (ttctr = rdelctr) and
> (grpcsk   = cskid ) and
> (rdelrde = grrderde) and
> (grrdegrp = grpid) and
> (cskid = 5) and
> (tsac = '70064993000140') and
> (tpgt is null) and
> (tvct >= '2008-05-14 00:00:00') and
> (tvct <= '2008-07-14 00:00:00')
> LIMIT 1;
> Mas a consulta eh pra retornar informações sobre qtas lojas,  qtos titulos
> e o valor do titulo quando a condicao  for verdadeira.

Como já havia escrito na outra mensagem ...
Se você tiver MUITOS NULLS na tabela ou se o Indice não foi criado
corretamente, ele não será usado mesmo.
Normalmente , se 30% dos valores da hash forem NULLS, o planejador não
usará o indice, pq é mais rápido fazer scan.
Outra possibilidade é criar indice composto condicional (tsac AND
ISNULL(tpgt)) e utilizar a funcao na comparação !

Bem .. acho que é isso...
-- 
Att:
Thiago Risso
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a