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