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 (
    693, 682, 676, 673, 671, 670, 664, 663, 
    658, 657, 656, 651, 650, 647, 645, 644, 
    641, 639, 636, 624, 622, 620, 619, 618, 
    616, 615, 608, 607, 600, 597, 584, 573, 
    561
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00087

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "13.15"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "3.29"
      },
      "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": 3,
            "filtered": "7.65",
            "index_condition": "(`betaatif_store`.`cscart_products_categories`.`product_id` in (693,682,676,673,671,670,664,663,658,657,656,651,650,647,645,644,641,639,636,624,622,620,619,618,616,615,608,607,600,597,584,573,561))",
            "cost_info": {
              "read_cost": "2.94",
              "eval_cost": "0.33",
              "prefix_cost": "9.86",
              "data_read_per_join": "52"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
561 12M
573 12M
584 12M
597 12M
600 5M
607 5M
608 5M
615 5M
616 17M
618 18M
619 5M
620 5M
622 5M
624 17M
636 17,2M
639 17,2M
641 17,2M
644 2M,17
645 18M
647 17M,2
650 2M,17
651 16M
656 3,15M
657 3,15M
658 3,15M
663 15M,3
664 15M,3
670 15M
671 15M
673 2M,17
676 5M
682 5M
693 5M