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.00115

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