Fetching very large data (300K) at a time

I am trying to fetch a very large data for export as downloadable formats. But it is taking very long time . How can we optimize this and reduce response time ?

PS: I can not reduce size, as it is needed to export data in downloadable formats

Are you using scan/scroll?