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 (
    51076, 51073, 51072, 51074, 51075, 22711, 
    22710, 51077, 51080, 51078, 51079, 
    51357, 51360, 51359, 51358, 51361, 
    30, 51362, 51363, 51364, 51365, 31, 
    51366, 51367, 51368, 51369, 46, 51370, 
    51371, 51372, 51373, 51452, 51453, 
    42, 51376, 51377, 51378, 51379, 51380
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00201

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "128.96"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 149,
            "rows_produced_per_join": 149,
            "filtered": "100.00",
            "index_condition": "(`test_uchur_k`.`cscart_products_categories`.`product_id` in (51076,51073,51072,51074,51075,22711,22710,51077,51080,51078,51079,51357,51360,51359,51358,51361,30,51362,51363,51364,51365,31,51366,51367,51368,51369,46,51370,51371,51372,51373,51452,51453,42,51376,51377,51378,51379,51380))",
            "cost_info": {
              "read_cost": "61.91",
              "eval_cost": "14.90",
              "prefix_cost": "76.81",
              "data_read_per_join": "2K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        },
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "test_uchur_k.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 7,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "37.25",
              "eval_cost": "0.75",
              "prefix_cost": "128.96",
              "data_read_per_join": "39K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`test_uchur_k`.`cscart_categories`.`storefront_id` in (0,1)) and ((`test_uchur_k`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`test_uchur_k`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`test_uchur_k`.`cscart_categories`.`usergroup_ids`))) and (`test_uchur_k`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
30 44,18,391,40M
31 43,391,18,40M
42 45,391,18M
46 42,18,391,40M
22710 392,42,40,18M
22711 392,42,40,18M
51072 40,42,392,18M
51073 40,42,392,18M
51074 40,42,392,18M
51075 40,42,392,18M
51076 392,40,42,18M
51077 392,40,42,18M
51078 392,40,42,18M
51079 392,40,42,18M
51080 392,40,42,18M
51357 391,18,42,40M
51358 391,42,18,40M
51359 391,18,42,40M
51360 391,18,42,40M
51361 391,18,44,40M
51362 391,18,44,40M
51363 391,18,44,40M
51364 391,18,44,40M
51365 18,44,391,40M
51366 18,391,43,40M
51367 391,43,18,40M
51368 391,43,18,40M
51369 391,43,18,40M
51370 391,18,42,40M
51371 391,18,42,40M
51372 391,18,42,40M
51373 391,18,42,40M
51376 45,391,18M
51377 45,391,18M
51378 391,45,18M
51379 391,45,18M
51380 391,45,18M
51452 18,42,391,40M
51453 18,42,391,40M