Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EXPLAIN ANALYZE
- SELECT products.*,
- category_names.category_name_combined AS category_name_combined,
- COALESCE(product_data.total_sales, 0) AS total_sales,
- COALESCE(product_data.total_costs, 0) AS total_costs,
- COALESCE(product_data.cpo, 0) AS cpo,
- best_base_price,
- best_full_price,
- best_shop_name,
- parent_name,
- count(*) OVER() AS total_count
- FROM "products"
- LEFT JOIN category_products ON category_products.product_id = products.id
- LEFT JOIN categories ON categories.id = category_products.category_id
- LEFT JOIN
- (SELECT string_agg(categories.name, '|||| ') AS category_name_combined,
- products.id
- FROM "products"
- LEFT JOIN category_products ON category_products.product_id = products.id
- LEFT JOIN categories ON categories.id = category_products.category_id
- WHERE "products"."company_id" = 119
- AND "products"."deleted_at" IS NULL
- GROUP BY products.id) category_names ON products.id = category_names.id
- LEFT JOIN LATERAL
- (SELECT product_id,
- COALESCE(SUM(product_performance_data.sales_conversions), 0) AS total_sales,
- COALESCE(SUM(product_performance_data.costs), 0) AS total_costs,
- (CASE (COALESCE(SUM(product_performance_data.sales_conversions), 0))
- WHEN 0 THEN 0
- ELSE (COALESCE(SUM(product_performance_data.costs), 0)) / (COALESCE(SUM(product_performance_data.sales_conversions), 0))
- END) AS cpo
- FROM "product_performance_data"
- WHERE (product_id = products.id)
- AND (DAY >= DATE('"2013-10-14T13:11:23.963Z"')
- AND DAY <= DATE('"2017-02-28T14:15:58.385Z"'))
- GROUP BY "product_performance_data"."product_id") product_data ON products.id = product_data.product_id
- LEFT JOIN LATERAL
- (SELECT product_id,
- base_price AS best_base_price,
- full_price AS best_full_price,
- RAW->>'shop_name' AS best_shop_name
- FROM "google_shopping_prices"
- WHERE (product_id = products.id)
- ORDER BY full_price ASC LIMIT 1) product_prices ON products.id = product_prices.product_id
- LEFT JOIN LATERAL
- (SELECT id,
- name AS parent_name
- FROM "products"
- WHERE "products"."company_id" = 119
- AND (shop_product_id = products.parent_id) LIMIT 1) product_parents ON products.id = product_parents.id
- WHERE "products"."company_id" = 119
- AND "products"."deleted_at" IS NULL
- AND (full_price_in_cents > (best_full_price * 100)::int) # If you remove this line, it takes ~700ms. with this line, 400s
- GROUP BY products.id,
- category_name_combined,
- total_sales,
- total_costs,
- cpo,
- best_base_price,
- best_full_price,
- best_shop_name,
- parent_name
- ORDER BY products.name ASC,
- products.name ASC LIMIT 100
- OFFSET 0 ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement