Muchas gracias amigo guillotmarc y Kipow, respecto al campo fecha comentarles que guardo la fecha y hora mas por lo que el tendre que utilizar fecha+1.
Respecto a los indices comentarles que en el Sp que tengo llamo a varios select he estado probando por separado en el plan analyzer y e estado mejorando los tiempos de ejecucion , solo en el siguiente tengo problemas:
Código SQL
[-]
select r.nro_recibo,cast(r.fecha as date),d.ap_paterno||' '||d.ap_materno||' '||d.nombres||'-->'||e.nombre_e, case r.porcentaje_cobro when 100 then c.costo else (r.porcentaje_cobro*c.costo)/100 end,r.costo_total,r.literal,r.nro_ambulatorio,r.usuario,r.tipo_paciente,r.nro_asegurado,r.nro_intern acion,r.factura,cast(r.fecha as time),r.monto_cobrar,r.porcentaje_cobro,c.nro,r.nro_factura
from recibo r,registro_consulta_med c,c_externa c1,doctor d,especialidad e
where ((r.nro_recibo=c.nro_recibo)and(c.nro_consulta=c1.nro)and(c1.id_doctor=d.ci)and(d.esp=e.nro)and(cast (r.fecha as date) between :f1 and :f2)and((r.cancelado=:valor)or(r.cancelado='M')))
el plan que me muestra es el siguiente:
PLAN JOIN (C1 NATURAL, D INDEX (PK_DOCTOR), E INDEX (PK_ESPECIALIDAD), C INDEX (REGISTRO_CONSULTA_MED_IDX4), R INDEX (PK_RECIBO))
Indicarles que en registro_consulta_med he creado un indice sobre el campo nro_consulta y aun eso no logro encontrar el error, pues el ibplan analyzer me muestra que esta tabla no esta indexada y en la grafica me muestra que la tabla c_externa no esta indexada, ademas el campo selectivity es de 80.80 para el indice REGISTRO_CONSULTA_MED_IDX4 del campo nro_consulta.
Comentarles que aparte de los indices creados por las llaves primarias y foraneas he creado nuevamente en las tablas indices sobre los campos que son llaves.
Y sobre como esta la consulta disculpen pues haciendo pruebas con el inner join me mostraba un mensaje en el alias de la tabla especialidad, como puedo estructurar mi consulta con inner join , creo q ahi esta tambien el problema.
Muchas gracias por responder y sus respuestas me ayudan mas a aprender sobre firebird