SELECT 
  cscart_products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      cscart_products_categories.link_type = "M", 
      CONCAT(
        cscart_products_categories.category_id, 
        "M"
      ), 
      cscart_products_categories.category_id
    )
  ) AS category_ids 
FROM 
  cscart_products_categories 
  INNER JOIN cscart_categories ON cscart_categories.category_id = cscart_products_categories.category_id 
  AND cscart_categories.storefront_id IN (0, 1) 
  AND (
    cscart_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_categories.usergroup_ids
    )
  ) 
  AND cscart_categories.status IN ('A', 'H') 
WHERE 
  cscart_products_categories.product_id IN (
    1948, 2095, 2100, 2124, 2101, 2134, 2198, 
    2291, 2103, 2307, 2166, 2208, 2102, 
    2104, 2345, 2143, 2119, 2144, 2362, 
    2233, 2350, 2232, 2244, 2051, 1855
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00042

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "23.83"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "0.69"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 68,
            "rows_produced_per_join": 2,
            "filtered": "4.00",
            "cost_info": {
              "read_cost": "7.63",
              "eval_cost": "0.27",
              "prefix_cost": "7.91",
              "data_read_per_join": "9K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`cscartdevel`.`cscart_categories`.`storefront_id` in (0,1)) and ((`cscartdevel`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`cscartdevel`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`cscartdevel`.`cscart_categories`.`usergroup_ids`))) and (`cscartdevel`.`cscart_categories`.`status` in ('A','H')))"
          }
        },
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "cscartdevel.cscart_categories.category_id"
            ],
            "rows_examined_per_scan": 16,
            "rows_produced_per_join": 0,
            "filtered": "1.58",
            "index_condition": "(`cscartdevel`.`cscart_products_categories`.`product_id` in (1948,2095,2100,2124,2101,2134,2198,2291,2103,2307,2166,2208,2102,2104,2345,2143,2119,2144,2362,2233,2350,2232,2244,2051,1855))",
            "cost_info": {
              "read_cost": "10.88",
              "eval_cost": "0.07",
              "prefix_cost": "23.14",
              "data_read_per_join": "11"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
1855 303M
1948 389M
2051 313M
2095 389M
2100 389M
2101 389M
2102 389M
2103 389M
2104 389M
2119 389M
2124 389M
2134 389M
2143 389M
2144 389M
2166 389M
2198 389M
2208 389M
2232 313M
2233 313M
2244 313M
2291 389M
2307 389M
2345 389M
2350 299M
2362 389M