La experiencia dice que: "divide y vencerás...".
Por lo tanto utiliza procedimientos almacenados dentro de la base de datos para que éstos te hagan calculos intermedios y por último generas la consulta con los resultados obtenidos...
Recuerda que todo lo que se haga dentro del motor de base de datos será mil veces más rápido que cuando se hace desde el cliente.
Cordialmente: