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, 835, 
    834, 841, 840, 839, 838, 837, 846, 845, 
    844, 843, 842, 851, 850, 849, 848, 847, 
    853, 852, 858, 857, 856, 855, 854, 872, 
    871, 870, 869, 868
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00104

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "109.20"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "5.11"
      },
      "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": 5,
            "filtered": "8.52",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (592,593,831,830,829,828,827,835,834,841,840,839,838,837,846,845,844,843,842,851,850,849,848,847,853,852,858,857,856,855,854,872,871,870,869,868))",
            "cost_info": {
              "read_cost": "61.60",
              "eval_cost": "1.02",
              "prefix_cost": "104.09",
              "data_read_per_join": "81"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
592 301M,366,374
593 374,301M,366
827 302,367M,301
828 302,367M,301
829 301,302,367M
830 301,302,367M
831 301,302,367M
834 372,301,373M
835 372,301,373M
837 368M,301,302
838 368M,301,302
839 301,302,368M
840 301,302,368M
841 301,302,368M
842 301,302,368M
843 368M,301,302
844 368M,301,302
845 301,302,368M
846 301,302,368M
847 301,302,368M
848 301,302,368M
849 301,302,368M
850 368M,301,302
851 368M,301,302
852 301,302,369M
853 301,302,369M
854 301,302,369M
855 301,302,369M
856 369M,301,302
857 369M,301,302
858 301,302,369M
868 301,302,369M
869 301,302,369M
870 301,302,369M
871 369M,301,302
872 369M,301,302