Ver Mensaje Individual
  #1  
Antiguo 17-09-2022
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Acelerar query

Buenos días. Necesito que me ayudéis con un problema. Tengo este query que se ejecuta en FB 2.5:
Código SQL [-]
SELECT A.CodPrv, A.Codigo, A.Apellidos, A.Nombre, A.Referencia, A.Situacion, A.F_alta, B.Cuota
  FROM Persona A, Cuotas B
 WHERE A.CodPrv = :PrvIns
   AND A.Codigo NOT IN (SELECT DISTINCT Codigo FROM Recibos WHERE CodPrv = A.CodPrv AND RefInt LIKE '1%' OR RefInt LIKE '2%') 
   AND A.CodPrv = B.CodPrv AND A.Codigo = B.Codigo AND B.Tipo = 'A' AND B.Cuota > 0
Las tablas Persona y Cuotas tienen como clave primaria CodPrv y Codigo; además Cuotas tiene una clave externa sobre esos mismos campos de Persona. La tabla Recibos tiene como clave primaria CodPrv, Codigo, Fecha y RefInt y tiene un índice sobre CodPrv y Codigo. La tabla Persona tiene ahora 15130 registros, Cuotas 4282 y Recibos 35471; tampoco son unas cifras excesivas.
El problema que tengo es este:

Como veis todas las lecturas que se hacen sobre la tabla Recibos no se hacen siguiendo el índice a pesar de que el campo que se compara está tanto en la clave primaria como en un índice y por lo tanto la ejecución se demora muchísimo, casi 4 minutos. Es más: si ejecuto el SELECT DISTICNT etc. sólo todas las lecturas que se hacen (70942) se hacen sin seguir ningún índice.

Mi pregunta es: ¿hay alguna forma de forzar que la lectura de la tabla Recibos se haga siguiendo un índice?
Responder Con Cita