Buen día, hace poco tuve un proceso contable, la de obtener un Balance General con datos desde el 2009 al 2017, con mas de 2,3 millones de registros, no se si conozca algo de Contabilidad, pero los procesos deben ejecutarse año a año ya que se debe obtener primeramente el Estado de Pérdidas y Ganancias. Este proceso se lo realizaba de un día para otro, usando técnicas propias del motor de Base de Datos (Store Procedure) se logró condensar la información en tablas con menos registros al punto de reducir el tiempo a 2 horas.
Usando técnicas parecidas podríamos reducir el tiempo en sus procesos, se lo puede hacer mediante C# o VB.Net o directamente desde el motor de Base de Datos, eso depende de los requerimientos de ustedes