explain.depesz.com

PostgreSQL's explain analyze made readable

Result: eoEQ

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=305,185.39..317,834.58 rows=281,093 width=190) (actual rows= loops=)

  • Group Key: va.violation_id, v.name, v.cveids, v.severity, v.classification, v.release_date, v.type
2. 0.000 0.000 ↓ 0.0

Sort (cost=305,185.39..305,888.13 rows=281,093 width=178) (actual rows= loops=)

  • Sort Key: va.violation_id, v.name, v.cveids, v.severity, v.classification, v.release_date, v.type
3. 0.000 0.000 ↓ 0.0

Gather (cost=30,395.08..254,762.51 rows=281,093 width=178) (actual rows= loops=)

  • Workers Planned: 2
4. 0.000 0.000 ↓ 0.0

Nested Loop (cost=29,395.08..225,653.21 rows=117,122 width=178) (actual rows= loops=)

  • Join Filter: (va.violation_id = v2.violation_id)
5. 0.000 0.000 ↓ 0.0

Parallel Hash Join (cost=29,394.53..142,217.91 rows=21,729 width=162) (actual rows= loops=)

  • Hash Cond: (va.violation_id = v.violation_id)
6. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on violation_assets va (cost=0.00..108,040.34 rows=21,729 width=16) (actual rows= loops=)

  • Filter: (state <> ALL ('{20,21,22,23,24,25,26,27}'::integer[]))
7. 0.000 0.000 ↓ 0.0

Parallel Hash (cost=22,257.79..22,257.79 rows=209,979 width=146) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on violations v (cost=0.00..22,257.79 rows=209,979 width=146) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Index Scan using violation_assets_uindx on violation_assets v2 (cost=0.55..3.80 rows=3 width=48) (actual rows= loops=)

  • Index Cond: (violation_id = v.violation_id)
  • Filter: (state <> ALL ('{20,21,22,23,24,25,26,27}'::integer[]))