explain.depesz.com

PostgreSQL's explain analyze made readable

Result: TWSr

Settings
# exclusive inclusive rows x rows loops node
1. 0.523 3.018 ↓ 143.0 143 1

Sort (cost=115.63..115.63 rows=1 width=2,771) (actual time=2.981..3.018 rows=143 loops=1)

  • Output: ""Game"".id, ""Game"".date, ""Game"".""durationMs"", ""Game"".""lastQueuedForSubstitutionProposal"", ""Game"".results, ""Game"".""closeToGameStartNotificationSent"", ""Game"".""lineupCompleted"", ""Game"".""addedMissingSpots"", ""Game"".""seasonOverridden"", ""Game"".""createdAt"", ""Game"".""updatedAt"", ""Game"".""LeagueId"", ""Game"".""SeasonId"", ""Game"".""HomeTeamId"", ""Game"".""AwayTeamId"", ""Game"".""LocationId"", ""Game"".""GameCreditId"", ""HomeTeam"".id, ""HomeTeam"".name, ""HomeTeam"".color, ""HomeTeam"".""logoURL"", ""HomeTeam"".""notifyCaptainOnAbsence"", ""HomeTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""HomeTeam"".""notifyCaptainOnSubstitution"", ""HomeTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""HomeTeam"".""disableAutomaticSubstituteSearch"", ""HomeTeam"".archived, ""HomeTeam"".""createdAt"", ""HomeTeam"".""updatedAt"", ""HomeTeam"".""LeagueId"", ""AwayTeam"".id, ""AwayTeam"".name, ""AwayTeam"".color, ""AwayTeam"".""logoURL"", ""AwayTeam"".""notifyCaptainOnAbsence"", ""AwayTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""AwayTeam"".""notifyCaptainOnSubstitution"", ""AwayTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""AwayTeam"".""disableAutomaticSubstituteSearch"", ""AwayTeam"".archived, ""AwayTeam"".""createdAt"", ""AwayTeam"".""updatedAt"", ""AwayTeam"".""LeagueId"", ""Location"".id, ""Location"".name, ""Location"".directions, ""Location"".address, ""Location"".latitude, ""Location"".longitude, ""Location"".""createdAt"", ""Location"".""updatedAt"", ""Location"".""LeagueId"", ""Season"".id, ""Season"".name, ""Season"".start, ""Season"".""end"", ""Season"".divisions, ""Season"".""initialStandings"", ""Season"".""initialPlayerStats"", ""Season"".""createdAt"", ""Season"".""updatedAt"", ""Season"".""LeagueId"
  • Sort Key: "Game".date
  • Sort Method: quicksort Memory: 549kB
  • Buffers: shared hit=1458
2. 0.230 2.495 ↓ 143.0 143 1

Nested Loop Left Join (cost=36.31..115.62 rows=1 width=2,771) (actual time=0.206..2.495 rows=143 loops=1)

  • Output: ""Game"".id, ""Game"".date, ""Game"".""durationMs"", ""Game"".""lastQueuedForSubstitutionProposal"", ""Game"".results, ""Game"".""closeToGameStartNotificationSent"", ""Game"".""lineupCompleted"", ""Game"".""addedMissingSpots"", ""Game"".""seasonOverridden"", ""Game"".""createdAt"", ""Game"".""updatedAt"", ""Game"".""LeagueId"", ""Game"".""SeasonId"", ""Game"".""HomeTeamId"", ""Game"".""AwayTeamId"", ""Game"".""LocationId"", ""Game"".""GameCreditId"", ""HomeTeam"".id, ""HomeTeam"".name, ""HomeTeam"".color, ""HomeTeam"".""logoURL"", ""HomeTeam"".""notifyCaptainOnAbsence"", ""HomeTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""HomeTeam"".""notifyCaptainOnSubstitution"", ""HomeTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""HomeTeam"".""disableAutomaticSubstituteSearch"", ""HomeTeam"".archived, ""HomeTeam"".""createdAt"", ""HomeTeam"".""updatedAt"", ""HomeTeam"".""LeagueId"", ""AwayTeam"".id, ""AwayTeam"".name, ""AwayTeam"".color, ""AwayTeam"".""logoURL"", ""AwayTeam"".""notifyCaptainOnAbsence"", ""AwayTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""AwayTeam"".""notifyCaptainOnSubstitution"", ""AwayTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""AwayTeam"".""disableAutomaticSubstituteSearch"", ""AwayTeam"".archived, ""AwayTeam"".""createdAt"", ""AwayTeam"".""updatedAt"", ""AwayTeam"".""LeagueId"", ""Location"".id, ""Location"".name, ""Location"".directions, ""Location"".address, ""Location"".latitude, ""Location"".longitude, ""Location"".""createdAt"", ""Location"".""updatedAt"", ""Location"".""LeagueId"", ""Season"".id, ""Season"".name, ""Season"".start, ""Season"".""end"", ""Season"".divisions, ""Season"".""initialStandings"", ""Season"".""initialPlayerStats"", ""Season"".""createdAt"", ""Season"".""updatedAt"", ""Season"".""LeagueId"
  • Buffers: shared hit=1458
3. 0.137 2.122 ↓ 143.0 143 1

Nested Loop Left Join (cost=36.04..111.85 rows=1 width=2,159) (actual time=0.202..2.122 rows=143 loops=1)

  • Output: ""Game"".id, ""Game"".date, ""Game"".""durationMs"", ""Game"".""lastQueuedForSubstitutionProposal"", ""Game"".results, ""Game"".""closeToGameStartNotificationSent"", ""Game"".""lineupCompleted"", ""Game"".""addedMissingSpots"", ""Game"".""seasonOverridden"", ""Game"".""createdAt"", ""Game"".""updatedAt"", ""Game"".""LeagueId"", ""Game"".""SeasonId"", ""Game"".""HomeTeamId"", ""Game"".""AwayTeamId"", ""Game"".""LocationId"", ""Game"".""GameCreditId"", ""HomeTeam"".id, ""HomeTeam"".name, ""HomeTeam"".color, ""HomeTeam"".""logoURL"", ""HomeTeam"".""notifyCaptainOnAbsence"", ""HomeTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""HomeTeam"".""notifyCaptainOnSubstitution"", ""HomeTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""HomeTeam"".""disableAutomaticSubstituteSearch"", ""HomeTeam"".archived, ""HomeTeam"".""createdAt"", ""HomeTeam"".""updatedAt"", ""HomeTeam"".""LeagueId"", ""AwayTeam"".id, ""AwayTeam"".name, ""AwayTeam"".color, ""AwayTeam"".""logoURL"", ""AwayTeam"".""notifyCaptainOnAbsence"", ""AwayTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""AwayTeam"".""notifyCaptainOnSubstitution"", ""AwayTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""AwayTeam"".""disableAutomaticSubstituteSearch"", ""AwayTeam"".archived, ""AwayTeam"".""createdAt"", ""AwayTeam"".""updatedAt"", ""AwayTeam"".""LeagueId"", ""Season"".id, ""Season"".name, ""Season"".start, ""Season"".""end"", ""Season"".divisions, ""Season"".""initialStandings"", ""Season"".""initialPlayerStats"", ""Season"".""createdAt"", ""Season"".""updatedAt"", ""Season"".""LeagueId"
  • Buffers: shared hit=1029
4. 0.140 1.699 ↓ 143.0 143 1

Nested Loop Left Join (cost=35.76..105.41 rows=1 width=2,031) (actual time=0.195..1.699 rows=143 loops=1)

  • Output: ""Game"".id, ""Game"".date, ""Game"".""durationMs"", ""Game"".""lastQueuedForSubstitutionProposal"", ""Game"".results, ""Game"".""closeToGameStartNotificationSent"", ""Game"".""lineupCompleted"", ""Game"".""addedMissingSpots"", ""Game"".""seasonOverridden"", ""Game"".""createdAt"", ""Game"".""updatedAt"", ""Game"".""LeagueId"", ""Game"".""SeasonId"", ""Game"".""HomeTeamId"", ""Game"".""AwayTeamId"", ""Game"".""LocationId"", ""Game"".""GameCreditId"", ""HomeTeam"".id, ""HomeTeam"".name, ""HomeTeam"".color, ""HomeTeam"".""logoURL"", ""HomeTeam"".""notifyCaptainOnAbsence"", ""HomeTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""HomeTeam"".""notifyCaptainOnSubstitution"", ""HomeTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""HomeTeam"".""disableAutomaticSubstituteSearch"", ""HomeTeam"".archived, ""HomeTeam"".""createdAt"", ""HomeTeam"".""updatedAt"", ""HomeTeam"".""LeagueId"", ""Season"".id, ""Season"".name, ""Season"".start, ""Season"".""end"", ""Season"".divisions, ""Season"".""initialStandings"", ""Season"".""initialPlayerStats"", ""Season"".""createdAt"", ""Season"".""updatedAt"", ""Season"".""LeagueId"
  • Buffers: shared hit=600
5. 0.766 1.273 ↓ 143.0 143 1

Nested Loop (cost=35.48..98.97 rows=1 width=1,903) (actual time=0.187..1.273 rows=143 loops=1)

  • Output: ""Game"".id, ""Game"".date, ""Game"".""durationMs"", ""Game"".""lastQueuedForSubstitutionProposal"", ""Game"".results, ""Game"".""closeToGameStartNotificationSent"", ""Game"".""lineupCompleted"", ""Game"".""addedMissingSpots"", ""Game"".""seasonOverridden"", ""Game"".""createdAt"", ""Game"".""updatedAt"", ""Game"".""LeagueId"", ""Game"".""SeasonId"", ""Game"".""HomeTeamId"", ""Game"".""AwayTeamId"", ""Game"".""LocationId"", ""Game"".""GameCreditId"", ""Season"".id, ""Season"".name, ""Season"".start, ""Season"".""end"", ""Season"".divisions, ""Season"".""initialStandings"", ""Season"".""initialPlayerStats"", ""Season"".""createdAt"", ""Season"".""updatedAt"", ""Season"".""LeagueId"
  • Join Filter: (((""Season"".divisions #> '{42,teams}'::text[]) @> ((""Game"".""HomeTeamId"")::text)::jsonb) OR ((""Season"".divisions #> '{42,teams}'::text[]) @> ((""Game"".""AwayTeamId"")::text)::jsonb))
  • Rows Removed by Join Filter: 149
  • Buffers: shared hit=171
6. 0.011 0.011 ↑ 1.0 1 1

Index Scan using "Season_pkey" on public."Season" (cost=0.15..8.17 rows=1 width=357) (actual time=0.010..0.011 rows=1 loops=1)

  • Output: ""Season"".id, ""Season"".name, ""Season"".start, ""Season"".""end"", ""Season"".divisions, ""Season"".""initialStandings"", ""Season"".""initialPlayerStats"", ""Season"".""createdAt"", ""Season"".""updatedAt"", ""Season"".""LeagueId"
  • Index Cond: ("Season".id = 362)
  • Buffers: shared hit=2
7. 0.376 0.496 ↓ 19.5 292 1

Bitmap Heap Scan on public."Game" (cost=35.33..90.20 rows=15 width=1,546) (actual time=0.139..0.496 rows=292 loops=1)

  • Output: ""Game"".id, ""Game"".date, ""Game"".""durationMs"", ""Game"".""lastQueuedForSubstitutionProposal"", ""Game"".results, ""Game"".""closeToGameStartNotificationSent"", ""Game"".""lineupCompleted"", ""Game"".""addedMissingSpots"", ""Game"".""seasonOverridden"", ""Game"".""createdAt"", ""Game"".""updatedAt"", ""Game"".""LeagueId"", ""Game"".""SeasonId"", ""Game"".""HomeTeamId"", ""Game"".""AwayTeamId"", ""Game"".""LocationId"", ""Game"".""GameCreditId"
  • Recheck Cond: (("Game"."SeasonId" = 362) AND ("Game"."LeagueId" = 529))
  • Heap Blocks: exact=158
  • Buffers: shared hit=169
8. 0.013 0.120 ↓ 0.0 0 1

BitmapAnd (cost=35.33..35.33 rows=15 width=0) (actual time=0.120..0.120 rows=0 loops=1)

  • Buffers: shared hit=11
9. 0.044 0.044 ↓ 1.1 317 1

Bitmap Index Scan on "fkindex_Game_SeasonId" (cost=0.00..14.47 rows=292 width=0) (actual time=0.044..0.044 rows=317 loops=1)

  • Index Cond: ("Game"."SeasonId" = 362)
  • Buffers: shared hit=4
10. 0.063 0.063 ↑ 1.0 575 1

Bitmap Index Scan on "fkindex_Game_LeagueId" (cost=0.00..20.60 rows=575 width=0) (actual time=0.063..0.063 rows=575 loops=1)

  • Index Cond: ("Game"."LeagueId" = 529)
  • Buffers: shared hit=7
11. 0.286 0.286 ↑ 1.0 1 143

Index Scan using "Team_pkey" on public."Team" "HomeTeam" (cost=0.28..6.43 rows=1 width=128) (actual time=0.002..0.002 rows=1 loops=143)

  • Output: ""HomeTeam"".id, ""HomeTeam"".name, ""HomeTeam"".color, ""HomeTeam"".""logoURL"", ""HomeTeam"".""notifyCaptainOnAbsence"", ""HomeTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""HomeTeam"".""notifyCaptainOnSubstitution"", ""HomeTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""HomeTeam"".""disableAutomaticSubstituteSearch"", ""HomeTeam"".archived, ""HomeTeam"".""createdAt"", ""HomeTeam"".""updatedAt"", ""HomeTeam"".""LeagueId"
  • Index Cond: ("Game"."HomeTeamId" = "HomeTeam".id)
  • Buffers: shared hit=429
12. 0.286 0.286 ↑ 1.0 1 143

Index Scan using "Team_pkey" on public."Team" "AwayTeam" (cost=0.28..6.43 rows=1 width=128) (actual time=0.002..0.002 rows=1 loops=143)

  • Output: ""AwayTeam"".id, ""AwayTeam"".name, ""AwayTeam"".color, ""AwayTeam"".""logoURL"", ""AwayTeam"".""notifyCaptainOnAbsence"", ""AwayTeam"".""notifyCaptainOnAbsenceOnlyCloseToGameStartMs"", ""AwayTeam"".""notifyCaptainOnSubstitution"", ""AwayTeam"".""notifyCaptainWhenNoSubstitueIsFound"", ""AwayTeam"".""disableAutomaticSubstituteSearch"", ""AwayTeam"".archived, ""AwayTeam"".""createdAt"", ""AwayTeam"".""updatedAt"", ""AwayTeam"".""LeagueId"
  • Index Cond: ("Game"."AwayTeamId" = "AwayTeam".id)
  • Buffers: shared hit=429
13. 0.143 0.143 ↑ 1.0 1 143

Index Scan using "Location_pkey" on public."Location" (cost=0.27..3.76 rows=1 width=612) (actual time=0.001..0.001 rows=1 loops=143)

  • Output: ""Location"".id, ""Location"".name, ""Location"".directions, ""Location"".address, ""Location"".latitude, ""Location"".longitude, ""Location"".""createdAt"", ""Location"".""updatedAt"", ""Location"".""LeagueId"
  • Index Cond: ("Game"."LocationId" = "Location".id)
  • Buffers: shared hit=429