You could schedule your search to run once a month and output to a CSV. Subsequent searches can pull the data from the monthly CSV.
Musskopf's comment is a good suggestion. You might also consider saving the query resuls in a summary index and pulling from the index to load the page.
You'll need to save your search as a report and schedule the report to run. Once it ran at least once, use the command " |loadjob "admin:search:report_name" " to get the results...