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, 
    858, 857, 856, 855, 854, 863, 862, 861, 
    860, 859, 872, 871, 870, 869, 868
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00124

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "109.64"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "5.55"
      },
      "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": "9.25",
            "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,858,857,856,855,854,863,862,861,860,859,872,871,870,869,868))",
            "cost_info": {
              "read_cost": "61.60",
              "eval_cost": "1.11",
              "prefix_cost": "104.09",
              "data_read_per_join": "88"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

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