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 (
    2202, 1814, 2331, 1748, 2005, 2214, 2342, 
    2215, 2211, 2225, 2212, 2213, 2226, 
    2151, 1882, 1815, 1853, 1759, 2001, 
    2276, 2231, 2281, 2379, 2388, 2115
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00044

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "24.81"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "0.72"
      },
      "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": 17,
            "rows_produced_per_join": 0,
            "filtered": "1.55",
            "index_condition": "(`cscartdevel`.`cscart_products_categories`.`product_id` in (2202,1814,2331,1748,2005,2214,2342,2215,2211,2225,2212,2213,2226,2151,1882,1815,1853,1759,2001,2276,2231,2281,2379,2388,2115))",
            "cost_info": {
              "read_cost": "11.56",
              "eval_cost": "0.07",
              "prefix_cost": "24.09",
              "data_read_per_join": "11"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
1748 324M
1759 388M
1814 324M
1815 388M
1853 388M
1882 388M
2001 388M
2005 324M
2115 299M
2151 313M
2202 299M
2211 324M
2212 324M
2213 324M
2214 324M
2215 324M
2225 324M
2226 324M
2231 313M
2276 401M
2281 389M
2331 324M
2342 324M
2379 389M
2388 299M