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 (
    965, 966, 1013, 1014, 666, 711, 713, 714, 
    715, 716, 717, 718, 719, 725, 726, 727, 
    663, 703, 704, 706, 707, 708, 709, 710, 
    607, 608, 623, 624, 960, 961, 962, 963, 
    964, 601, 602, 603, 604, 797, 798, 799, 
    800, 801, 802, 803, 804, 805, 806, 807, 
    808, 809, 810, 813, 814, 822, 823, 720, 
    721, 722, 723, 724
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00168

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "111.93"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "7.79"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 125,
            "rows_produced_per_join": 5,
            "filtered": "4.00",
            "cost_info": {
              "read_cost": "29.49",
              "eval_cost": "1.00",
              "prefix_cost": "30.49",
              "data_read_per_join": "20K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`cscart`.`cscart_categories`.`storefront_id` in (0,1)) and ((`cscart`.`cscart_categories`.`usergroup_ids` = '') or find_in_set(0,`cscart`.`cscart_categories`.`usergroup_ids`) or find_in_set(1,`cscart`.`cscart_categories`.`usergroup_ids`)) and (`cscart`.`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": [
              "cscart.cscart_categories.category_id"
            ],
            "rows_examined_per_scan": 12,
            "rows_produced_per_join": 7,
            "filtered": "12.98",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (965,966,1013,1014,666,711,713,714,715,716,717,718,719,725,726,727,663,703,704,706,707,708,709,710,607,608,623,624,960,961,962,963,964,601,602,603,604,797,798,799,800,801,802,803,804,805,806,807,808,809,810,813,814,822,823,720,721,722,723,724))",
            "cost_info": {
              "read_cost": "61.65",
              "eval_cost": "1.56",
              "prefix_cost": "104.14",
              "data_read_per_join": "124"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
601 305M,329,303
602 303,305M,329
603 303,305M,329
604 303,305M,329
607 333M,335,343
608 333M,335,343
623 333M,335,343
624 343,333M,335
663 313M,415
666 312,313M,415
703 313M,415
704 313M,415
706 313M,415
707 313M,415
708 313M,415
709 313M,415
710 313M,415
711 312,313M,415
713 312,313M,415
714 415,312,313M
715 312,313M,415
716 312,313M,415
717 312,313M,415
718 312,313M,415
719 312,313M,415
720 415M
721 415M
722 415M
723 415M
724 415M
725 402M,312,313
726 313,402M,312
727 312,313,402M
797 392,396M,393
798 392,396M,393
799 393,392,396M
800 393,392,396M
801 392,396M,393
802 392,396M,393
803 392,396M,393
804 392,396M,393
805 392,396M,393
806 393,392,396M
807 396M,393,392
808 392,396M,393
809 392,396M,393
810 392,396M,393
813 392,397M,394
814 394,392,397M
822 398M,395,392
823 392,398M,395
960 333,335M,341
961 333,335M,341
962 342M,333,335
963 342M,333,335
964 342M,333,335
965 344M,333,335
966 335,344M,333
1013 309,356M,345
1014 309,356M,345