SELECT 
  cscart_product_prices.product_id, 
  COALESCE(
    cscart_master_products_storefront_min_price.price, 
    MIN(
      IF(
        cscart_product_prices.percentage_discount = 0, 
        cscart_product_prices.price, 
        cscart_product_prices.price - (
          cscart_product_prices.price * cscart_product_prices.percentage_discount
        )/ 100
      )
    )
  ) AS price 
FROM 
  cscart_product_prices 
  LEFT JOIN cscart_master_products_storefront_min_price ON cscart_master_products_storefront_min_price.product_id = cscart_product_prices.product_id 
  AND cscart_master_products_storefront_min_price.storefront_id = 1 
WHERE 
  cscart_product_prices.product_id IN (
    662, 666, 663, 348, 661, 350, 719, 313, 
    665, 659, 307, 398
  ) 
  AND cscart_product_prices.lower_limit = 1 
  AND cscart_product_prices.usergroup_id IN (0, 1) 
GROUP BY 
  cscart_product_prices.product_id

Query time 0.00047

JSON explain

{
  "query_block": {
    "select_id": 1,
    "table": {
      "table_name": "cscart_master_products_storefront_min_price",
      "access_type": "system",
      "possible_keys": ["PRIMARY"],
      "rows": 0,
      "filtered": 0,
      "const_row_not_found": true
    },
    "table": {
      "table_name": "cscart_product_prices",
      "access_type": "ref",
      "possible_keys": ["usergroup", "product_id", "lower_limit", "usergroup_id"],
      "key": "lower_limit",
      "key_length": "3",
      "used_key_parts": ["lower_limit"],
      "ref": ["const"],
      "rows": 51,
      "filtered": 23.52941132,
      "index_condition": "cscart_product_prices.product_id in (662,666,663,348,661,350,719,313,665,659,307,398) and cscart_product_prices.usergroup_id in (0,1)",
      "attached_condition": "cscart_product_prices.lower_limit <=> 1"
    }
  }
}

Result

product_id price
307 38.00000000
313 0.00000000
348 59.00000000
350 39.00000000
398 45.00000000
659 18.00000000
661 63.00000000
662 88.00000000
663 99.00000000
665 25.00000000
666 32.00000000
719 112.00000000