Если на самом деле это занимает так много времени, вы можете запланировать запуск процесса с использованием агента SQL и сделать вывод в таблицу, а затем изменить веб-приложение для чтения таблицы, а не для выполнения хранимой процедуры. Вам нужно будет решить, как часто запускать обновление, и обрабатывать запросы, возникающие во время его обновления, но с этим также можно справиться, имея два выходных файла, один живой и один для последнего обновления.
Но я бы еще раз взглянул на процедуру, посмотрел план выполнения и увидел, где он медленный, чтобы убедиться, что он не выполняет полное сканирование таблицы.