explain.depesz.com

PostgreSQL's explain analyze made readable

Result: ENrp

Settings

Optimization(s) for this plan:

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

Nested Loop Left Join (cost=320.31..672.78 rows=11 width=5,745) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=320.02..581.37 rows=11 width=4,772) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=319.74..494.02 rows=11 width=4,744) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Nested Loop (cost=319.45..406.66 rows=11 width=4,133) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Limit (cost=319.17..319.19 rows=11 width=1,192) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Sort (cost=319.17..319.19 rows=11 width=1,192) (actual rows= loops=)

  • Sort Key: retailer_term_v2s.score DESC NULLS LAST, generic_term_v2s.score DESC NULLS LAST, ((((ts_rank(items_0.full_text_v2, '''appl'''::tsquery, 1) * '100'::double precision) + (COALESCE(products_conversions.score, '0'::double precision) * '1000'::double precision)) * '1'::double precision)) DESC, items_0.item_id DESC
7. 0.000 0.000 ↓ 0.0

WindowAgg (cost=145.95..318.98 rows=11 width=1,192) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=145.95..318.62 rows=11 width=1,139) (actual rows= loops=)

  • Join Filter: (generic_term_v2s.product_id = items_0.product_id)
9. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=145.79..310.28 rows=11 width=1,131) (actual rows= loops=)

  • Join Filter: ((retailer_term_v2s.product_id = items_0.product_id) AND (retailer_term_v2s.retailer_id = items_0.retailer_id))
10. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=141.60..296.64 rows=11 width=1,123) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=141.19..198.45 rows=11 width=1,115) (actual rows= loops=)

  • Join Filter: ((items_availabilities.inventory_area_id = items_0.inventory_area_id) AND (items_availabilities.item_id = items_0.item_id))
12. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on items_0 (cost=136.98..182.73 rows=11 width=1,107) (actual rows= loops=)

  • Recheck Cond: ((full_text_v2 @@ '''appl'''::tsquery) AND (inventory_area_id = 20,636))
  • Filter: (visible AND available AND (NOT alcoholic))
13. 0.000 0.000 ↓ 0.0

BitmapAnd (cost=136.98..136.98 rows=12 width=0) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on search_index_v2_items_0 (cost=0.00..20.80 rows=80 width=0) (actual rows= loops=)

  • Index Cond: ((full_text_v2 @@ '''appl'''::tsquery) AND (inventory_area_id = 20,636))
15. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on items_0_available_visible_idx (cost=0.00..115.93 rows=2,764 width=0) (actual rows= loops=)

  • Index Cond: ((available = true) AND (visible = true))
16. 0.000 0.000 ↓ 0.0

Materialize (cost=4.21..14.39 rows=7 width=20) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on items_availabilities_0 items_availabilities (cost=4.21..14.35 rows=7 width=20) (actual rows= loops=)

  • Recheck Cond: (inventory_area_id = 20,636)
18. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on items_availabilities_0_inventory_area_id_idx (cost=0.00..4.21 rows=7 width=0) (actual rows= loops=)

  • Index Cond: (inventory_area_id = 20,636)
19. 0.000 0.000 ↓ 0.0

Index Scan using index_products_conversions_on_cpk on products_conversions (cost=0.42..8.44 rows=1 width=12) (actual rows= loops=)

  • Index Cond: ((version = 3) AND (product_id = items_0.product_id) AND ((query)::text = 'apples'::text))
20. 0.000 0.000 ↓ 0.0

Materialize (cost=4.19..12.69 rows=5 width=16) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on retailer_products_term_v2s retailer_term_v2s (cost=4.19..12.66 rows=5 width=16) (actual rows= loops=)

  • Recheck Cond: (term = 'apples'::text)
22. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on index_retailer_products_term_v2s_on_natural_key (cost=0.00..4.19 rows=5 width=0) (actual rows= loops=)

  • Index Cond: (term = 'apples'::text)
23. 0.000 0.000 ↓ 0.0

Materialize (cost=0.15..8.18 rows=1 width=12) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Index Scan using index_retailer_products_term_v2s_on_natural_key on retailer_products_term_v2s generic_term_v2s (cost=0.15..8.17 rows=1 width=12) (actual rows= loops=)

  • Index Cond: ((term = 'apples'::text) AND (retailer_id = '-1'::integer))
25. 0.000 0.000 ↓ 0.0

Index Scan using index_retailer_products_on_retailer_id_and_product_id on retailer_products (cost=0.29..7.94 rows=1 width=2,941) (actual rows= loops=)

  • Index Cond: ((retailer_id = items_0.retailer_id) AND (product_id = items_0.product_id))
26. 0.000 0.000 ↓ 0.0

Index Scan using index_deprecated_retailer_products_mls_cpk on deprecated_retailer_products_mls (cost=0.29..7.94 rows=1 width=619) (actual rows= loops=)

  • Index Cond: ((retailer_id = items_0.retailer_id) AND (product_id = items_0.product_id))
27. 0.000 0.000 ↓ 0.0

Index Scan using index_deprecated_retailer_products_cpgs_cpk on deprecated_retailer_products_cpgs (cost=0.29..7.94 rows=1 width=36) (actual rows= loops=)

  • Index Cond: ((retailer_id = items_0.retailer_id) AND (product_id = items_0.product_id))
28. 0.000 0.000 ↓ 0.0

Index Scan using deprecated_items_denormalized_retailer_id_product_id_invent_idx on deprecated_items_denormalizeds_0 (cost=0.29..8.31 rows=1 width=901) (actual rows= loops=)