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 (
    709, 708, 707, 705, 701, 697, 696, 695, 
    693, 682, 676, 673, 671, 670, 664, 663, 
    658, 657, 656, 651, 650, 647, 645, 644, 
    641, 639, 636, 624, 622
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00097

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "12.84"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "2.98"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 20,
            "rows_produced_per_join": 1,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "2.52",
              "eval_cost": "0.10",
              "prefix_cost": "2.62",
              "data_read_per_join": "2K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`betaatif_store`.`cscart_categories`.`storefront_id` in (0,1)) and ((`betaatif_store`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`betaatif_store`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`betaatif_store`.`cscart_categories`.`usergroup_ids`))) and (`betaatif_store`.`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": [
              "betaatif_store.cscart_categories.category_id"
            ],
            "rows_examined_per_scan": 43,
            "rows_produced_per_join": 2,
            "filtered": "6.94",
            "index_condition": "(`betaatif_store`.`cscart_products_categories`.`product_id` in (709,708,707,705,701,697,696,695,693,682,676,673,671,670,664,663,658,657,656,651,650,647,645,644,641,639,636,624,622))",
            "cost_info": {
              "read_cost": "2.94",
              "eval_cost": "0.30",
              "prefix_cost": "9.86",
              "data_read_per_join": "47"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
622 5M
624 17M
636 2M,17
639 2M,17
641 2M,17
644 2M,17
645 18M
647 2,17M
650 17,2M
651 16M
656 3,15M
657 3,15M
658 3,15M
663 3,15M
664 3,15M
670 15M
671 15M
673 17,2M
676 5M
682 5M
693 5M
695 5M
696 5M
697 5M
701 15M
705 5M
707 17M
708 5M
709 5M