Saludos
Tengo una función que cada vez que se solicita realiza consultas a base de datos y la procesa para mostrar la información al usuario. Estos datos están en distintas bd (MySQL y SQLServer). Después de obtenida toda lo necesario se continua con el cálculo y procesamiento de esta.
El pero es que consume demasiados tiempo en procesar la solicitud y todas las consultas tiene varios join y devuelven array como resultados. Me podrían orientar sobre cómo optimizar las consultas o el cálculo que realizo.
Respuestas
@dariongg aunque tu pregunta está clara, me temo que es demasiado genérica. Dices que el bajo rendimiento podría ser debido a que haces muchas consultas o debido al procesamiento que haces de la información. Me temo que dependiendo de cada escenario, las soluciones sería diferentes.
En el caso de Doctrine, para reducir las consultas solamente suele haber dos soluciones: hacer JOINs y usar la caché (Doctrine define varias: para metadata, para consultas, para resultados, etc.) Aquí puedes ver más información sobre estas caches.
En el caso del cálculo de la información, es "imposible" dar consejos genéricos, ya que habría que ver el código entero para ver qué se puede optimizar. Si no lo has probado ya, te recomiendo que uses alguna herramienta como Blackfire.io que te dice exactamente dónde está el cuello de botella de tu aplicación, por lo que podrás empezar a optimizar exactamente donde más hace falta.
@javiereguiluz
La situación es que uso una BD vieja, la cual no está bien diseñada las relaciones y acumula muchos datos en una sola tabla. Por lo tanto, para obtener la información base, debo realizar varias consultas y procesar dicha información.
A partir de eso vuelvo procesar y calcular para obtener lo que requiero. Lo cual implica muchas conversiones datos, condiciones varias
Lo cual implica mucho tiempo en proceso.
Los datos se cargan al bd a diario, y despues pasado el dia no se modificaran a corto plazo.
@dariongg