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 (
    347, 346, 345, 344, 342, 341, 340, 339, 
    338, 335, 334, 333, 332, 331, 330, 321, 
    320, 319, 318, 317, 316, 315, 314, 313
  ) 
  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.00046

JSON explain

{
  "query_block": {
    "select_id": 1,
    "filesort": {
      "sort_key": "cscart_product_prices.product_id",
      "temporary_table": {
        "nested_loop": [
          {
            "table": {
              "table_name": "cscart_product_prices",
              "access_type": "ALL",
              "possible_keys": [
                "usergroup",
                "product_id",
                "lower_limit",
                "usergroup_id"
              ],
              "rows": 78,
              "filtered": 30.76922989,
              "attached_condition": "cscart_product_prices.lower_limit = 1 and cscart_product_prices.product_id in (347,346,345,344,342,341,340,339,338,335,334,333,332,331,330,321,320,319,318,317,316,315,314,313) and cscart_product_prices.usergroup_id in (0,1)"
            }
          }
        ]
      }
    }
  }
}

Result

product_id price
313 546000.00000000
314 278000.00000000
315 539000.00000000
316 278000.00000000
317 539000.00000000
318 260000.00000000
319 500000.00000000
320 332000.00000000
321 332000.00000000
330 2156000.00000000
331 30000.00000000
332 64000.00000000
333 88000.00000000
334 155000.00000000
335 190000.00000000
338 620000.00000000
339 418000.00000000
340 411000.00000000
341 404000.00000000
342 396000.00000000
344 254000.00000000
345 95000.00000000
346 114000.00000000
347 437000.00000000