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 (
    22172, 2873, 2854, 22268, 1942, 2857, 
    22214, 1945, 22263, 2859, 1946, 44946, 
    44943, 44944, 44947, 47974, 44945, 
    44281
  ) 
  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.00132

JSON explain

{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "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": 18,
          "filtered": 99.9960556,
          "index_condition": "cscart_product_prices.product_id in (22172,2873,2854,22268,1942,2857,22214,1945,22263,2859,1946,44946,44943,44944,44947,47974,44945,44281)",
          "attached_condition": "cscart_product_prices.lower_limit = 1 and cscart_product_prices.usergroup_id in (0,1)"
        }
      }
    ]
  }
}

Result

product_id price
1942 85000.0000
1945 450000.0000
1946 75000.0000
2854 350000.0000
2857 450000.0000
2859 550000.0000
2873 300000.0000
22172 280000.0000
22214 85000.0000
22263 150000.0000
22268 100000.0000
44281 150000.0000
44943 680000.0000
44944 650000.0000
44945 650000.0000
44946 700000.0000
44947 320000.0000
47974 380000.0000