А по смыслу - этот отчет , обычный Олап гиперкуб. А медленно он делается - потому, что исходные данные денормализованы + неудачный первичный ключ -это приводит к неоправданно большим затратам при транспортировки данных по сетке и трудности в эффективном построении сечения гиперкуба (разумеется если нет грубейших ошибок , вроде Select * from...) .
Так я ещё в самом первом своём сообщении намекнул на проблемы в проектировании...
И если копнуть глубже, то OLAP... это следствие неправильного способа изоляций транзакций В СУБД (при условии правильного проектирования). Почему возникла потребность в OLAP? Потому что аналитические транзакции:
1. Работают медленно (перелопачивают большой объём информации);
2. Требуют высоких уровней изолированности, чтобы анализируемые данные не менялись во время работы транзакции (как минимум repeatable read).
Как следствие, блокировочные СУБД просто "встают колом" и никто не может достучаться до БД. Чтобы этого не происходило, данные сливают в OLAP и там анализируют. Если СУБД поддерживает версионность, то потребность в OLAP значительно снижается. Хотя нормальных версионных серверов просто нет.