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 (
    431698, 431699, 431700, 431701, 431702, 
    431703, 431704, 431705, 431706, 431707, 
    431708, 431709, 431710, 431711, 431712, 
    431713, 431714, 431715, 431716, 431717, 
    431718, 431719, 431720, 431721, 431722, 
    431723, 431724, 431725, 431726, 431727, 
    431728, 431729, 431730, 431731, 431732, 
    431733
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00167

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "116.31"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "link_type",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 72,
            "rows_produced_per_join": 72,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "15.51",
              "eval_cost": "14.40",
              "prefix_cost": "29.91",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`webmarco`.`cscart_products_categories`.`product_id` in (431698,431699,431700,431701,431702,431703,431704,431705,431706,431707,431708,431709,431710,431711,431712,431713,431714,431715,431716,431717,431718,431719,431720,431721,431722,431723,431724,431725,431726,431727,431728,431729,431730,431731,431732,431733))"
          }
        },
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "webmarco.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 3,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "72.00",
              "eval_cost": "0.72",
              "prefix_cost": "116.31",
              "data_read_per_join": "21K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`webmarco`.`cscart_categories`.`storefront_id` in (0,1)) and ((`webmarco`.`cscart_categories`.`usergroup_ids` = '') or find_in_set(0,`webmarco`.`cscart_categories`.`usergroup_ids`) or find_in_set(1,`webmarco`.`cscart_categories`.`usergroup_ids`)) and (`webmarco`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
431698 2769,2722M
431699 2769,2722M
431700 2769,2722M
431701 2769,2722M
431702 2769,2722M
431703 2769,2722M
431704 2769,2722M
431705 2769,2722M
431706 2769,2722M
431707 2769,2722M
431708 2769,2722M
431709 2769,2722M
431710 2769,2722M
431711 2769,2722M
431712 2769,2722M
431713 2769,2722M
431714 2769,2722M
431715 2769,2722M
431716 2769,2722M
431717 2769,2722M
431718 2769,2722M
431719 2769,2722M
431720 2769,2722M
431721 2769,2722M
431722 2769,2722M
431723 2769,2722M
431724 2769,2722M
431725 2769,2722M
431726 2769,2722M
431727 2769,2722M
431728 2769,2722M
431729 2769,2722M
431730 2769,2722M
431731 2769,2722M
431732 2769,2722M
431733 2769,2722M