explain.depesz.com

PostgreSQL's explain analyze made readable

Result: BNcN

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

Unique (cost=19,624.06..19,624.07 rows=1 width=9) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Sort (cost=19,624.06..19,624.06 rows=1 width=9) (actual rows= loops=)

  • Sort Key: (((NOT ((productfrom.width)::text IS DISTINCT FROM (productto.width)::text)) AND (NOT ((productfrom.depth)::text IS DISTINCT FROM (productto.depth)::text)) AND (NOT ((productfrom.length)::text IS DISTINCT FROM (productto.length)::text)) AND (NOT ((productfrom.height)::text IS DISTINCT FROM (productto.height)::text)) AND (NOT ((productfrom.diameter)::text IS DISTINCT FROM (productto.diameter)::text)))) DESC, (((productto.custom_program IS NULL) = (productfrom.custom_program IS NULL))) DESC, productto.article_number
3. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,006.32..19,624.05 rows=1 width=9) (actual rows= loops=)

  • Filter: ((fromisleather.name)::text IS DISTINCT FROM (toisleather.name)::text)
4. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,005.89..19,615.57 rows=1 width=83) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,005.46..19,612.22 rows=1 width=87) (actual rows= loops=)

  • Join Filter: ((rls.valid_from >= c.valid_from) AND (rls.valid_from <= c.valid_to))
6. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,005.19..19,610.06 rows=1 width=111) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,004.90..19,600.79 rows=1 width=119) (actual rows= loops=)

  • Join Filter: ((rls.valid_from >= s.valid_from) AND (rls.valid_from <= s.valid_to))
8. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,004.61..19,588.71 rows=4 width=111) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,004.32..19,578.74 rows=4 width=111) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,002.52..19,537.84 rows=1 width=119) (actual rows= loops=)

  • Filter: (NOT ((subsetto.characteristic_value_key)::text IS DISTINCT FROM (subsetfrom.characteristic_value_key)::text))
11. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,001.96..19,255.66 rows=39 width=123) (actual rows= loops=)

  • Join Filter: ((productto.product_id <> productfrom.product_id) AND (NOT ((productto.collection)::text IS DISTINCT FROM (productfrom.collection)::text)))
12. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.98..17.03 rows=1 width=48) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Index Scan using web_product_article_num_uk on web_product productfrom (cost=0.42..8.44 rows=1 width=44) (actual rows= loops=)

  • Index Cond: (((article_number)::text = '10009994'::text) AND (release_id = 389))
14. 0.000 0.000 ↓ 0.0

Index Scan using web_product_attribute_pk on web_product_attribute subsetfrom (cost=0.56..8.58 rows=1 width=20) (actual rows= loops=)

  • Index Cond: ((productfrom.product_id = product_id) AND (productfrom.release_id = release_id) AND (release_id = 389) AND ((characteristic_key)::text = 'EPM_SUBSET'::text))
15. 0.000 0.000 ↓ 0.0

Gather (cost=1,000.98..19,186.10 rows=3,502 width=83) (actual rows= loops=)

  • Workers Planned: 2
16. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.98..17,835.90 rows=1,459 width=83) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.55..11,601.56 rows=1,503 width=48) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.13..4,817.43 rows=299 width=24) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on product_group pg (cost=0.00..4,391.87 rows=2,694 width=32) (actual rows= loops=)

  • Filter: ((release_id = 389) AND (deleted_flag = 0))
20. 0.000 0.000 ↓ 0.0

Index Scan using release_valid_from_uk on release rls (cost=0.13..0.16 rows=1 width=16) (actual rows= loops=)

  • Index Cond: ((valid_from >= pg.valid_from) AND (valid_from <= pg.valid_to))
  • Filter: (id = 389)
21. 0.000 0.000 ↓ 0.0

Index Scan using product_group_product_pk on product_group_product pgp (cost=0.42..22.62 rows=7 width=24) (actual rows= loops=)

  • Index Cond: ((product_group_id = pg.id) AND (release_id = 389))
  • Filter: (deleted_flag = 0)
22. 0.000 0.000 ↓ 0.0

Index Scan using web_product_pk on web_product productto (cost=0.42..4.15 rows=1 width=51) (actual rows= loops=)

  • Index Cond: ((product_id = pgp.product_id) AND (release_id = 389))
23. 0.000 0.000 ↓ 0.0

Index Scan using web_product_attribute_pk on web_product_attribute subsetto (cost=0.56..7.22 rows=1 width=20) (actual rows= loops=)

  • Index Cond: ((productto.product_id = product_id) AND (productto.release_id = release_id) AND (release_id = 389) AND ((characteristic_key)::text = 'EPM_SUBSET'::text))
24. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on subcategory_set_product_group sspg (cost=1.80..40.86 rows=4 width=24) (actual rows= loops=)

  • Recheck Cond: (product_group_id = pgp.product_group_id)
  • Filter: ((release_id = 389) AND (deleted_flag = 0))
25. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on subcategory_set_product_group_product_group_id_idx (cost=0.00..1.80 rows=36 width=0) (actual rows= loops=)

  • Index Cond: (product_group_id = pgp.product_group_id)
26. 0.000 0.000 ↓ 0.0

Index Scan using subcategory_set_pk on subcategory_set ss (cost=0.29..2.49 rows=1 width=24) (actual rows= loops=)

  • Index Cond: ((id = sspg.subcategory_set_id) AND (release_id = 389))
  • Filter: (deleted_flag = 0)
27. 0.000 0.000 ↓ 0.0

Index Scan using subcategory_pk on subcategory s (cost=0.29..3.01 rows=1 width=32) (actual rows= loops=)

  • Index Cond: ((id = ss.subcategory_id) AND (release_id = 389))
  • Filter: (deleted_flag = 0)
28. 0.000 0.000 ↓ 0.0

Index Scan using category_subcategory_subcategory_id_idx on category_subcategory cs (cost=0.29..9.26 rows=1 width=24) (actual rows= loops=)

  • Index Cond: (subcategory_id = s.id)
  • Filter: ((release_id = 389) AND (deleted_flag = 0))
29. 0.000 0.000 ↓ 0.0

Index Scan using category_pk on category c (cost=0.28..2.15 rows=1 width=32) (actual rows= loops=)

  • Index Cond: ((id = cs.category_id) AND (release_id = 389))
  • Filter: (deleted_flag = 0)
30. 0.000 0.000 ↓ 0.0

Index Only Scan using web_product_type_pk on web_product_type toisleather (cost=0.43..3.34 rows=1 width=28) (actual rows= loops=)

  • Index Cond: ((product_id = productto.product_id) AND (release_id = productto.release_id) AND (release_id = 389) AND (name = 'LEATHER'::text))
31. 0.000 0.000 ↓ 0.0

Index Only Scan using web_product_type_pk on web_product_type fromisleather (cost=0.43..8.45 rows=1 width=28) (actual rows= loops=)

  • Index Cond: ((product_id = productfrom.product_id) AND (release_id = productfrom.release_id) AND (release_id = 389) AND (name = 'LEATHER'::text))