El 14 de julio de 2010 18:45, OgiSer Tamade <tamade.ogi...@gmail.com> escribió:
>
> Algunos tips.
> 1. ¿Probaste con un índice assignedto / status?
> Si, no obstante te he enviado todos los indices.

En los índices que mandaste no está ese.
No entiendo si lo probaste o no, y en todo caso si notaste alguna mejora ...
de todas formas, el explain es de la otra consulta es distinta, como
te decía Álvaro

>
> 2. El status convendría que lo pases a numérico. Si no lo usás para
> otra cosa, en esta consulta ese índice está de más y podrías
> eliminarlo.
>
> lo utilizo en otra parte del codigo.

Ok. Pero te conviene pasarlo a numérico.

>
> 3. ¿Callbackdate puede ser futuro?
> si puede ser futuro.

Ok.


Con respecto a tu query, una cosa que podrás probar es hacer tres
ejecuciones distintas y luego una unión.
Así como está no te está agarrando los índices por estatus y usuario asignado.
Sería algo así

select bla bla bla ...
and (S.assignedto IS NULL) -- aca ddeberia tomar indice por assigned

union all
select bla bla bla
and (S.assignedto<>'A436MA' AND S.status='rejected' ) -- aca por status

union all
select bla bla bla
and ( S.assignedto<>'A436MA' AND S.status='error') --- y aca por status

order by ....
limit 1

Si tenés pocos registros con assigned en nulo, con status rejected y
status error, puede ser que funcione.
Probá cada query en particular y fijate si agarra el índice correcto.
Luego probá de juntarlos con la unión.

Espero que sirva.
Silvio
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a