SELECT 
  jmj_product_prices.product_id, 
  COALESCE(
    jmj_master_products_storefront_min_price.price, 
    MIN(
      IF(
        jmj_product_prices.percentage_discount = 0, 
        jmj_product_prices.price, 
        jmj_product_prices.price - (
          jmj_product_prices.price * jmj_product_prices.percentage_discount
        )/ 100
      )
    )
  ) AS price 
FROM 
  jmj_product_prices 
  LEFT JOIN jmj_master_products_storefront_min_price ON jmj_master_products_storefront_min_price.product_id = jmj_product_prices.product_id 
  AND jmj_master_products_storefront_min_price.storefront_id = 1 
WHERE 
  jmj_product_prices.product_id IN (
    1728, 814, 816, 817, 818, 819, 820, 821, 
    822, 823, 825, 826, 827, 828, 895, 899, 
    901, 902, 813, 1460, 830, 868, 869, 870
  ) 
  AND jmj_product_prices.lower_limit = 1 
  AND jmj_product_prices.usergroup_id IN (0, 1) 
GROUP BY 
  jmj_product_prices.product_id

Query time 0.01118

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "106.34"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "9.77"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "jmj_product_prices",
            "access_type": "range",
            "possible_keys": [
              "usergroup",
              "product_id",
              "lower_limit",
              "usergroup_id"
            ],
            "key": "product_id",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 49,
            "rows_produced_per_join": 9,
            "filtered": "19.94",
            "index_condition": "(`jmj_test`.`jmj_product_prices`.`product_id` in (1728,814,816,817,818,819,820,821,822,823,825,826,827,828,895,899,901,902,813,1460,830,868,869,870))",
            "cost_info": {
              "read_cost": "90.66",
              "eval_cost": "1.95",
              "prefix_cost": "92.61",
              "data_read_per_join": "234"
            },
            "used_columns": [
              "product_id",
              "price",
              "percentage_discount",
              "lower_limit",
              "usergroup_id"
            ],
            "attached_condition": "((`jmj_test`.`jmj_product_prices`.`lower_limit` = 1) and (`jmj_test`.`jmj_product_prices`.`usergroup_id` in (0,1)))"
          }
        },
        {
          "table": {
            "table_name": "jmj_master_products_storefront_min_price",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 9,
            "filtered": "100.00",
            "using_join_buffer": "Block Nested Loop",
            "cost_info": {
              "read_cost": "2.01",
              "eval_cost": "1.95",
              "prefix_cost": "96.57",
              "data_read_per_join": "156"
            },
            "used_columns": [
              "storefront_id",
              "product_id",
              "price"
            ],
            "attached_condition": "<if>(is_not_null_compl(jmj_master_products_storefront_min_price), ((`jmj_test`.`jmj_master_products_storefront_min_price`.`storefront_id` = 1) and (`jmj_test`.`jmj_master_products_storefront_min_price`.`product_id` = `jmj_test`.`jmj_product_prices`.`product_id`)), true)"
          }
        }
      ]
    }
  }
}

Result

product_id price
813 299.00000000
814 449.00000000
816 369.00000000
817 369.00000000
818 369.00000000
819 349.00000000
820 379.00000000
821 379.00000000
822 449.00000000
823 369.00000000
825 369.00000000
826 349.00000000
827 449.00000000
828 449.00000000
830 260.00000000
868 285.00000000
869 260.00000000
870 285.00000000
895 369.00000000
899 425.00000000
901 440.00000000
902 370.00000000
1460 500.00000000
1728 1299.00000000