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 (
    49164, 23152, 47896, 47924, 31631, 398, 
    387, 5549, 382, 263, 23419, 5815, 46177, 
    5809, 6045, 2149, 48323, 48324
  ) 
  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.00160

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 (49164,23152,47896,47924,31631,398,387,5549,382,263,23419,5815,46177,5809,6045,2149,48323,48324)",
          "attached_condition": "cscart_product_prices.lower_limit = 1 and cscart_product_prices.usergroup_id in (0,1)"
        }
      }
    ]
  }
}

Result

product_id price
263 96000.0000
382 170000.0000
387 50000.0000
398 68000.0000
2149 200000.0000
5549 195000.0000
5809 90000.0000
5815 106000.0000
6045 499000.0000
23152 199000.0000
23419 185000.0000
31631 49000.0000
46177 140000.0000
47896 315000.0000
47924 315000.0000
48323 250000.0000
48324 220000.0000
49164 700000.0000