Я бы использовал хранимые процедуры, но не по каким-либо причинам скорости (я сомневаюсь, что это будет иметь значение).Реорганизовать вашу базу данных намного проще, если вы знаете, что весь ваш вызывающий код находится в хранимых процедурах, а не похоронен в файлах rdl.
Из того, что я помню об службах отчетов, сам шаг рендеринга может быть довольно трудоемким и можеттайм-аут на рендеринг, а не на поиск данных.
Пробовали ли вы использовать SQL Profiler во время просмотра отчета, чтобы увидеть, сколько времени занимает промежуток между оператором, получающим данные, отображенные как завершенные, и отчетом, который выводится?