explain.depesz.com

PostgreSQL's explain analyze made readable

Result: AG5

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

Nested Loop (cost=996.93..1,189.24 rows=1 width=131) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Nested Loop (cost=996.64..1,180.92 rows=1 width=131) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=996.64..1,098.92 rows=1 width=127) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=996.49..1,090.74 rows=1 width=115) (actual rows= loops=)

  • Hash Cond: (n2c.configuration_id = a.configuration_id)
5. 0.000 0.000 ↓ 0.0

HashAggregate (cost=985.18..1,024.86 rows=3,968 width=12) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Hash Join (cost=667.78..964.06 rows=4,224 width=12) (actual rows= loops=)

  • Hash Cond: (n.nlorderticket_id = nt.nlorderticket_id)
7. 0.000 0.000 ↓ 0.0

Hash Join (cost=468.18..701.10 rows=4,224 width=12) (actual rows= loops=)

  • Hash Cond: (n2.nlorderticketitem_id = n.nlorderticketitem_id)
8. 0.000 0.000 ↓ 0.0

Hash Join (cost=235.53..389.25 rows=4,224 width=12) (actual rows= loops=)

  • Hash Cond: (n2c.nlorderticketconf_id = n2.nlorderticketconf_id)
9. 0.000 0.000 ↓ 0.0

Seq Scan on nlorderconf2conf n2c (cost=0.00..69.24 rows=4,224 width=8) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Hash (cost=154.68..154.68 rows=6,468 width=16) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Seq Scan on nlorderticketconf n2 (cost=0.00..154.68 rows=6,468 width=16) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Hash (cost=172.29..172.29 rows=4,829 width=16) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Seq Scan on nlorderticketitem n (cost=0.00..172.29 rows=4,829 width=16) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Hash (cost=174.81..174.81 rows=1,983 width=16) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Hash Join (cost=89.23..174.81 rows=1,983 width=16) (actual rows= loops=)

  • Hash Cond: (nt.nlorder_id = o.nlorder_id)
16. 0.000 0.000 ↓ 0.0

Seq Scan on nlorderticket nt (cost=0.00..55.83 rows=1,983 width=16) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Hash (cost=64.66..64.66 rows=1,966 width=8) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Seq Scan on nlorder o (cost=0.00..64.66 rows=1,966 width=8) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Hash (cost=11.30..11.30 rows=1 width=107) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Hash Join (cost=8.31..11.30 rows=1 width=107) (actual rows= loops=)

  • Hash Cond: (pd.product_id = a.product_id)
21. 0.000 0.000 ↓ 0.0

Seq Scan on product_definition pd (cost=0.00..2.71 rows=71 width=58) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Hash (cost=8.30..8.30 rows=1 width=53) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Index Scan using account_pkey on account a (cost=0.28..8.30 rows=1 width=53) (actual rows= loops=)

  • Index Cond: (account_id = 1555)
24. 0.000 0.000 ↓ 0.0

Index Scan using k_configuration_id on change_products (cost=0.15..8.17 rows=1 width=16) (actual rows= loops=)

  • Index Cond: ((configuration_id = a.configuration_id) AND ((state)::text = 'prepared'::text))
25. 0.000 0.000 ↓ 0.0

Seq Scan on service2bataccount sb (cost=0.00..81.99 rows=1 width=8) (actual rows= loops=)

  • Filter: (account_id = 1555)
26. 0.000 0.000 ↓ 0.0

Index Only Scan using configuration_pkey on configuration c (cost=0.29..8.31 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (configuration_id = a.configuration_id)