You should be able to optimize this for loop by bringing back a list of reports as your result set using an IN() SQL select statement. This would be much better than pulling a new connection from the connection pool once for each available report. For one, you wouldn't have to do this in a for loop, but also you'd also only need to use one connection once to pull back the entire list of reports that you need.