Hello Albert,
The report generation time typically depends on how big the report is for each API call for a single account. In this case, as you are downloading the reports from each account in the MCC, which means making API call for each account, it may take a few mins. If this is repetitive process, maybe you could adjust the date range in such a way that you are only downloading the newer data which your database does not already have and save the data in your database every time you make the API call. This may not be a tremendous reduction in the time as the real issue here is the number of accounts that you need to fetch data from.
Thanks,
Sreelakshmi, AdWords API Team