SELECT 
  vi_product_prices.product_id, 
  MIN(
    IF(
      vi_product_prices.percentage_discount = 0, 
      vi_product_prices.price, 
      vi_product_prices.price - (
        vi_product_prices.price * vi_product_prices.percentage_discount
      )/ 100
    )
  ) AS price 
FROM 
  vi_product_prices 
WHERE 
  vi_product_prices.product_id IN (
    187, 232, 230, 231, 170, 131, 177, 186, 
    185, 179, 233, 152, 160, 237, 235, 122, 
    115, 129, 127, 188
  ) 
  AND vi_product_prices.lower_limit = 1 
  AND vi_product_prices.usergroup_id IN (0, 1) 
GROUP BY 
  vi_product_prices.product_id

Query time 0.00038

JSON explain

{
  "query_block": {
    "select_id": 1,
    "filesort": {
      "sort_key": "vi_product_prices.product_id",
      "temporary_table": {
        "nested_loop": [
          {
            "table": {
              "table_name": "vi_product_prices",
              "access_type": "ref",
              "possible_keys": [
                "usergroup",
                "product_id",
                "lower_limit",
                "usergroup_id"
              ],
              "key": "lower_limit",
              "key_length": "3",
              "used_key_parts": ["lower_limit"],
              "ref": ["const"],
              "rows": 255,
              "filtered": 100,
              "attached_condition": "vi_product_prices.lower_limit <=> 1 and vi_product_prices.product_id in (187,232,230,231,170,131,177,186,185,179,233,152,160,237,235,122,115,129,127,188) and vi_product_prices.usergroup_id in (0,1)"
            }
          }
        ]
      }
    }
  }
}

Result

product_id price
115 4595.00000000
122 5695.00000000
127 4779.00000000
129 1799.00000000
131 1249.00000000
152 700.00000000
160 200.00000000
170 145.99000000
177 400.00000000
179 299.97000000
185 139.99000000
186 299.99000000
187 299.99000000
188 10.00000000
230 125.00000000
231 99.00000000
232 79.95000000
233 47.99000000
235 79.99000000
237 299.99000000