SELECT 
  cscart_product_prices.product_id, 
  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 
WHERE 
  cscart_product_prices.product_id IN (
    15947, 15949, 15950, 12520, 12497, 12528, 
    12512, 12511, 12527, 10580, 10579, 
    9936, 9931, 12521, 12504, 12502
  ) 
  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.00143

JSON explain

{
  "query_block": {
    "select_id": 1,
    "table": {
      "table_name": "cscart_product_prices",
      "access_type": "range",
      "possible_keys": ["usergroup", "product_id", "lower_limit", "usergroup_id"],
      "key": "product_id",
      "key_length": "3",
      "used_key_parts": ["product_id"],
      "rows": 16,
      "filtered": 99.23484039,
      "index_condition": "cscart_product_prices.product_id in (15947,15949,15950,12520,12497,12528,12512,12511,12527,10580,10579,9936,9931,12521,12504,12502)",
      "attached_condition": "cscart_product_prices.lower_limit = 1 and cscart_product_prices.usergroup_id in (0,1)"
    }
  }
}

Result

product_id price
9931 1331.00000000
9936 1331.00000000
10579 1791.00000000
10580 1791.00000000
12497 0.00000000
12502 0.00000000
12504 0.00000000
12511 0.00000000
12512 0.00000000
12520 0.00000000
12521 0.00000000
12527 0.00000000
12528 0.00000000
15947 6047.00000000
15949 4982.00000000
15950 4982.00000000