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 (
    579, 578, 1127, 1042, 868, 517, 938, 946, 
    456, 559, 542, 407, 866, 515, 561, 491, 
    493, 573, 651, 562, 435, 523, 650, 583
  ) 
  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.00127

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": 24,
      "filtered": 4.897957802,
      "index_condition": "cscart_product_prices.product_id in (579,578,1127,1042,868,517,938,946,456,559,542,407,866,515,561,491,493,573,651,562,435,523,650,583)",
      "attached_condition": "cscart_product_prices.lower_limit = 1 and cscart_product_prices.usergroup_id in (0,1)"
    }
  }
}

Result

product_id price
407 0.00000000
435 0.00000000
456 0.00000000
491 0.00000000
493 0.00000000
515 0.00000000
517 0.00000000
523 0.00000000
542 0.00000000
559 0.00000000
561 0.00000000
562 114000.00000000
573 0.00000000
578 384000.00000000
579 105000.00000000
583 534000.00000000
650 0.00000000
651 0.00000000
866 0.00000000
868 0.00000000
938 0.00000000
946 0.00000000
1042 0.00000000
1127 0.00000000