SELECT 
  SQL_CALC_FOUND_ROWS (
    CASE WHEN products.parent_product_id <> 0 THEN products.parent_product_id ELSE products.product_id END
  ) AS product_id, 
  IF(
    shared_descr.product_id IS NOT NULL, 
    shared_descr.product, descr1.product
  ) as product, 
  companies.company as company_name, 
  IF(
    shared_prices.product_id IS NOT NULL, 
    MIN(
      IF (
        shared_prices.percentage_discount = 0, 
        shared_prices.price, 
        shared_prices.price - (
          shared_prices.price * shared_prices.percentage_discount
        ) / 100
      )
    ), 
    MIN(
      IF (
        prices.percentage_discount = 0, 
        prices.price, 
        prices.price - (
          prices.price * prices.percentage_discount
        ) / 100
      )
    )
  ) as price, 
  GROUP_CONCAT(
    products.product_id 
    ORDER BY 
      products.parent_product_id ASC, 
      products.product_id ASC
  ) AS product_ids, 
  GROUP_CONCAT(
    products.product_type 
    ORDER BY 
      products.parent_product_id ASC, 
      products.product_id ASC
  ) AS product_types, 
  GROUP_CONCAT(
    products.parent_product_id 
    ORDER BY 
      products.parent_product_id ASC, 
      products.product_id ASC
  ) AS parent_product_ids, 
  products.product_type, 
  products.parent_product_id, 
  products.free_shipping, 
  products.product_label_id, 
  products.product_label_id_by_admin, 
  categories.id_path 
FROM 
  cscart_products as products 
  LEFT JOIN cscart_product_descriptions as descr1 ON descr1.product_id = products.product_id 
  AND descr1.lang_code = 'en' 
  LEFT JOIN cscart_product_prices as prices ON prices.product_id = products.product_id 
  AND prices.lower_limit = 1 
  LEFT JOIN cscart_product_prices as prices_2 ON prices.product_id = prices_2.product_id 
  AND prices_2.lower_limit = 1 
  AND prices_2.price < prices.price 
  AND prices_2.usergroup_id IN (0, 0, 1) 
  LEFT JOIN cscart_companies AS companies ON companies.company_id = products.company_id 
  INNER JOIN cscart_products_categories as products_categories ON products_categories.product_id = products.product_id 
  INNER JOIN cscart_categories ON cscart_categories.category_id = products_categories.category_id 
  AND (
    cscart_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_categories.usergroup_ids
    )
  ) 
  AND cscart_categories.status IN ('A', 'H') 
  AND cscart_categories.storefront_id IN (0, 1) 
  LEFT JOIN cscart_ult_product_descriptions shared_descr ON shared_descr.product_id = products.product_id 
  AND shared_descr.company_id = 1 
  AND shared_descr.lang_code = 'en' 
  LEFT JOIN cscart_ult_product_prices as shared_prices ON shared_prices.product_id = products.product_id 
  AND shared_prices.lower_limit = 1 
  AND shared_prices.usergroup_id IN (0, 0, 1) 
  AND shared_prices.company_id = 1 
  LEFT JOIN cscart_ult_product_prices as shared_prices_2 ON shared_prices.product_id = shared_prices_2.product_id 
  AND shared_prices_2.company_id = 1 
  AND shared_prices_2.lower_limit = 1 
  AND shared_prices_2.price < shared_prices.price 
  AND shared_prices_2.usergroup_id IN (0, 0, 1) 
  LEFT JOIN cscart_categories as categories ON categories.category_id = products_categories.category_id 
  LEFT JOIN cscart_product_label as product_label ON product_label.id = products.product_label_id_by_admin 
WHERE 
  1 
  AND products.product_id NOT IN (135) 
  AND companies.status IN ('A') 
  AND (
    prices.price >= 0.00 
    OR shared_prices.price >= 0.00
  ) 
  AND (
    prices.price <= 0.00 
    OR shared_prices.price <= 0.00
  ) 
  AND (
    products.usergroup_ids = '' 
    OR FIND_IN_SET(0, products.usergroup_ids) 
    OR FIND_IN_SET(1, products.usergroup_ids)
  ) 
  AND products.status IN ('A') 
  AND prices.usergroup_id IN (0, 0, 1) 
  AND prices_2.price IS NULL 
  AND shared_prices_2.price IS NULL 
GROUP BY 
  product_id 
ORDER BY 
  product asc, 
  products.product_id ASC 
LIMIT 
  0, 3

Query time 0.00583

Explain
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE companies system PRIMARY 1 Using temporary; Using filesort
1 SIMPLE prices ALL usergroup,product_id,lower_limit,usergroup_id 295 Using where
1 SIMPLE prices_2 ref usergroup,product_id,lower_limit,usergroup_id usergroup 3 cscart_dev_4_16.prices.product_id 1 Using where; Not exists
1 SIMPLE products eq_ref PRIMARY,status PRIMARY 3 cscart_dev_4_16.prices.product_id 1 Using where
1 SIMPLE shared_descr eq_ref PRIMARY,product_id,company_id PRIMARY 13 cscart_dev_4_16.prices.product_id,const,const 1 Using where
1 SIMPLE shared_prices ref usergroup,product_id,company_id,lower_limit,usergroup_id usergroup 3 cscart_dev_4_16.prices.product_id 1 Using where
1 SIMPLE shared_prices_2 ref usergroup,product_id,company_id,lower_limit,usergroup_id usergroup 3 cscart_dev_4_16.shared_prices.product_id 1 Using where; Not exists
1 SIMPLE products_categories ref PRIMARY,pt pt 3 cscart_dev_4_16.prices.product_id 1
1 SIMPLE cscart_categories eq_ref PRIMARY,c_status,p_category_id PRIMARY 3 cscart_dev_4_16.products_categories.category_id 1 Using where
1 SIMPLE categories eq_ref PRIMARY,p_category_id PRIMARY 3 cscart_dev_4_16.products_categories.category_id 1
1 SIMPLE descr1 eq_ref PRIMARY,product_id PRIMARY 9 cscart_dev_4_16.prices.product_id,const 1 Using where

Result

product_id product company_name price product_ids product_types parent_product_ids product_type parent_product_id free_shipping product_label_id product_label_id_by_admin id_path
136 BlazBlue: Continuum Shift EXTEND CS-Cart 0.00000000 136 P 0 P 0 N 245/249
138 Ridge Racer CS-Cart 0.00000000 138 P 0 P 0 N 245/249
139 Shinobido 2: Revenge of Zen CS-Cart 0.00000000 139 P 0 P 0 N 245/249