SELECT 
  cscart_june_setupproducts_categories.product_id, 
  GROUP_CONCAT(
    IF(
      cscart_june_setupproducts_categories.link_type = "M", 
      CONCAT(
        cscart_june_setupproducts_categories.category_id, 
        "M"
      ), 
      cscart_june_setupproducts_categories.category_id
    )
  ) AS category_ids 
FROM 
  cscart_june_setupproducts_categories 
  INNER JOIN cscart_june_setupcategories ON cscart_june_setupcategories.category_id = cscart_june_setupproducts_categories.category_id 
  AND cscart_june_setupcategories.storefront_id IN (0, 1) 
  AND (
    cscart_june_setupcategories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_june_setupcategories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_june_setupcategories.usergroup_ids
    )
  ) 
  AND cscart_june_setupcategories.status IN ('A', 'H') 
WHERE 
  cscart_june_setupproducts_categories.product_id IN (
    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
    52, 53, 54, 55, 56
  ) 
GROUP BY 
  cscart_june_setupproducts_categories.product_id

Query time 0.00103

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "31.00"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "0.45"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_june_setupcategories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 84,
            "rows_produced_per_join": 3,
            "filtered": "4.00",
            "cost_info": {
              "read_cost": "19.53",
              "eval_cost": "0.67",
              "prefix_cost": "20.20",
              "data_read_per_join": "8K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`vishalecarter_june_setup`.`cscart_june_setupcategories`.`storefront_id` in (0,1)) and ((`vishalecarter_june_setup`.`cscart_june_setupcategories`.`usergroup_ids` = '') or find_in_set(0,`vishalecarter_june_setup`.`cscart_june_setupcategories`.`usergroup_ids`) or find_in_set(1,`vishalecarter_june_setup`.`cscart_june_setupcategories`.`usergroup_ids`)) and (`vishalecarter_june_setup`.`cscart_june_setupcategories`.`status` in ('A','H')))"
          }
        },
        {
          "table": {
            "table_name": "cscart_june_setupproducts_categories",
            "access_type": "ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "vishalecarter_june_setup.cscart_june_setupcategories.category_id"
            ],
            "rows_examined_per_scan": 2,
            "rows_produced_per_join": 0,
            "filtered": "6.72",
            "index_condition": "(`vishalecarter_june_setup`.`cscart_june_setupproducts_categories`.`product_id` in (41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56))",
            "cost_info": {
              "read_cost": "9.00",
              "eval_cost": "0.09",
              "prefix_cost": "30.55",
              "data_read_per_join": "7"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
41 225M
42 185M
43 185M
44 221M
45 221M
46 221M
47 247M
48 186M
49 186M
50 186M
51 186M
52 202M
53 202M
54 202M
55 187M
56 187M