[firebase-br] Plan - Natural (Order By)

Douglas Tosi douglasht em gmail.com
Qua Mar 17 11:03:26 -03 2010


2010/3/17 Felipe Aron <felipearon em gmail.com>:
> Existe um índice para o campo "data_chqdev" ascendente. Se eu usar no order
> by somente o campo "data_chqdev" ele utiliza indice, já colocando um segundo
> campo "numero_chqrec" o plan deixa de usar o indice e coloca como NATURAL o
> Join ChequesDevol.
>
> Alguém sabe como contornar essa situação?

Oi Felipe, algumas idéias:

Existe índice cd.codcheque_chqdev? Se não existe tente criar um.

Qual a função do campo codstatus_chqdev? Se ele for um flag booleano e
o valor 1 for a extrema minoria, você pode tentar usar um índice nele.

Você pode tentar este select para forçar o uso de índice no join e
forçar o sort em memória:

select numero_chqrec
from (
select cd.data_chqdev, c.numero_chqrec
 from chequesdevol cd
       inner join chequesrec c on (cd.codcheque_chqdev = c.codigo_chqrec)
where cd.valordeve_chqdev > 0
 and cd.codstatus_chqdev = 1
)
order by data_chqdev, numero_chqrec

Abraço,
-- 
Douglas Tosi
www.sinatica.com




Mais detalhes sobre a lista de discussão lista