Hi,
I have actually been dealing with the same issue over the past 24 hours and this is how i resolved it.
Firstly I added some proper indexes on the database, I was still having speed issues. Then i disabled parameter sniffing on the query.
Basically ssrs sniffs the parameter coming into a report and can sometimes produce a convulted execution plan based on those parameters. To disable parameter sniffing you should create a local variable within your sproc or sql statement and assign the parameter to that instead.
I.E If you passed a variable from your report called @customerId and your query looked like this
select * from customer where id = @customerId
Change it to
declare @localCustomerId varchar(10)
set @localCustomerId = @customerId
select * from customer where id = @localCustomerId
This will produce a much more efficient execution plan if parameter sniffing is the problem.
Also if you are using a sproc try setting nocount on
Hope this helps !
Cheryl