Many of our queries look at pages that were edited/created in the time frame by the given participants, etc. This is done as a subquery.
With the new reports we'll be doing more such queries, and would have to fetch the pages all over again. It may be more efficient to get the page IDs in a separate query, store them and use a rev_page IN (...) clause.
We want to store them in our database rather than cache because organizers may create reports long after the event has ended, yet the list of pages would remain unchanged. We could store the page IDs as a comma-separated list, compressed, and this wouldn't require much for storage.
When fetching page IDs, the code should look at the event end date. If it's before the end date, run the query to get page IDs and store it, and use this for subsequent queries. If it's after the end date, we don't need to fetch page IDs again.
For titles, just do something like SELECT page_title FROM page WHERE page_id IN (...). This should be fast. When getting pageviews for instance, we may want to use fetch() on the aforementioned query instead of fetchAll(), at least in chunks, so all the titles don't have to be in memory at once.