Sentry Issue: [POSTHOG-821](https://sentry.io/organizations/posthog/issues/3707400683/?referrer=github_integration)

Sentry is reporting that when listing session recordings loading persons is n+1

Looking at how the query works 

we 
* load person distinct ids for recordings in the list
* load the persons that have those distinct ids
* create a fict of distinct id to person
* for each of the recordings
    * look up the  person in the dict and pass them to a `PersonSerializer`
    * that looks up the person's distinct ids while choosing Person's `name`
    * (maybe only when there's no email) in order to determine the first distinct id for the person
    
 That final lookup of distinct ids is (**I think**) where the n plus 1 problem is. 
 
 For each person one at a time we go to the DB and get their distinct ids
 
 There's no foreign key from `Person` to `PersonDistinctId` so we can't utilise `select_related` here. 
 
 _maybe_ we can if we use a list serializer for Persons and then combine the two lists
 
 Some of the reports suggest 50% of the time generating the list is spent loading persons
posthog/api/test/test_session_recordings.py
self,
        distinct_id,
        session_id,
        timestamp,
        team_id=None,
        window_id="",
        source=0,
        has_full_snapshot=True,
        type=2,
        snapshot_data=None,
    ):
        if team_id is None:
            team_id = self.team.pk
        snapshot = {
            "timestamp": timestamp.timestamp() * 1000,
            "has_full_snapshot": has_full_snapshot,
            "type": type,
            "data": {"source": source},
        }
        if snapshot_data:
            snapshot.update(snapshot_data)
        create_session_recording_events(
            team_id=team_id,
            distinct_id=distinct_id,
            timestamp=timestamp,
            session_id=session_id,
            window_id=window_id,
            snapshots=[snapshot],
        )
    def create_chunked_snapshots(