Hola a todos de nuevo, tengo una consulta de mysql la cual funciona bien el problema es cuando trato de hacer la consulta en toda la tabla, ésta tabla con la que trabajo es muyyyyyyy grande y he leído que las subconsultas tienen pésimo rendimiento con tablas tan grandes, no se si cambiar la consulta con un join, si es así lo intenté pero me marca un error tras otro, ¿alguien tiene una mejor idea?
el query es el siguiente:
Código:
SELECT
plan.numero_prestamo,
plan.numero_cuota,
plan.numero_cuota+1 AS proxima_cuota,
plan.periodo,
plan.codigo_tipo_saldo,
FROM
pr_saldos_plan_pago_mes plan
WHERE
plan.numero_prestamo = 1 AND
plan.numero_cuota IN
( SELECT
MAX( numero_cuota ) AS ultima_cuota
FROM
pr_saldos_plan_pago_mes
WHERE
numero_prestamo = 1 )
Este query me arroja bien los resultados, solo que pueden notar que hay un filtro "where" con el cual me arroja solo los numero de prestamo = 1, la idea es que me arroje todos los demás, pero al quitarle los where la consulta se vuelve eterna, lleva ejecutándose 20 hrs y aún no tengo respuesta, cabe destacar que hay mínimo 50mil créditos diferentes, es decir, es una gran tabla, no me importa esperar mucho tiempo en el query, pero mas de 20hrs??? imposible, necesito reducirlo a máximo poco mas de una hora....los resultados con el where incluido son:
Código:
numero_prestamo numero_cuota proxima_cuota periodo codigo_tipo_saldo
1 153 154 12 55
1 153 154 12 6
1 153 154 12 2
1 153 154 12 53
1 153 154 12 1
ahora se debe hacer eso, pero sin filtrar solo en numero de préstamo "1"
Alguien tiene una idea de como optimizar éste proceso???? muchas gracias de antemano!
PD: otra idea que tuve era hacer la consulta sin subconsulta, mas simplificado como:
SELECT *
FROM
pr_saldos_plan_pagos
WHERE
numero_prestamo = 1
ORDER BY
numero_cuota DESC
LIMIT
5
El resultado da el mismo, el gran problema es que el "limit 5" tendría que ser variable siempre, ya que cada numero de prestamo varía la cantidad de numero de cuota, en este caso es 5, pero puede ser 1, puede ser 3, puede ser 9, etc, etc. eso destruye la lógica