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 (
    104659, 104658, 104657, 104656, 104655, 
    105977, 105976, 105975, 104560, 104559, 
    104558, 104557, 104556, 104555, 104529, 
    104573, 104572, 104571, 104505, 104504
  ) 
  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.00093

Explain
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE cscart_product_prices range usergroup,product_id,lower_limit,usergroup_id usergroup 9 40 Using where

Result

product_id price
104504 1.69000000
104505 1.69000000
104529 1.69000000
104555 1.69000000
104556 1.69000000
104557 1.69000000
104558 1.69000000
104559 1.69000000
104560 1.69000000
104571 1.69000000
104572 1.69000000
104573 1.69000000
104655 1.69000000
104656 1.69000000
104657 1.69000000
104658 1.69000000
104659 1.69000000
105975 1.69000000
105976 1.69000000
105977 1.69000000