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 (
    592, 593, 831, 830, 829, 828, 827, 833, 
    832, 835, 834, 841, 840, 839, 838, 837, 
    846, 845, 844, 843, 842, 851, 850, 849, 
    848, 847, 853, 852, 858, 857, 856, 855, 
    854, 863, 862, 861, 860, 859, 867, 866, 
    865, 864, 872, 871, 870, 869, 868, 874, 
    873, 878, 877, 876, 875
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00151

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "111.59"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "7.50"
      },
      "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.50",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (592,593,831,830,829,828,827,833,832,835,834,841,840,839,838,837,846,845,844,843,842,851,850,849,848,847,853,852,858,857,856,855,854,863,862,861,860,859,867,866,865,864,872,871,870,869,868,874,873,878,877,876,875))",
            "cost_info": {
              "read_cost": "61.60",
              "eval_cost": "1.50",
              "prefix_cost": "104.09",
              "data_read_per_join": "120"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
592 301M,374,366
593 366,301M,374
827 367M,302,301
828 367M,302,301
829 302,301,367M
830 302,301,367M
831 302,301,367M
832 374M,366,301
833 374M,366,301
834 372,373M,301
835 301,372,373M
837 301,368M,302
838 301,368M,302
839 301,368M,302
840 368M,302,301
841 368M,302,301
842 301,368M,302
843 301,368M,302
844 301,368M,302
845 301,368M,302
846 301,368M,302
847 368M,302,301
848 368M,302,301
849 301,368M,302
850 301,368M,302
851 301,368M,302
852 301,369M,302
853 369M,302,301
854 369M,302,301
855 301,369M,302
856 301,369M,302
857 301,369M,302
858 301,369M,302
859 302,301,369M
860 369M,302,301
861 369M,302,301
862 301,369M,302
863 301,369M,302
864 301,369M,302
865 301,369M,302
866 369M,302,301
867 369M,302,301
868 301,369M,302
869 301,369M,302
870 301,369M,302
871 301,369M,302
872 369M,302,301
873 302,370M,301
874 301,302,370M
875 301,369M,302
876 301,369M,302
877 301,369M,302
878 301,369M,302