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 (
    276667, 276668, 276669, 276670, 276671, 
    276672, 276673, 276674, 276675, 276676, 
    276677, 276678, 276679, 276680, 276681, 
    276682, 276683, 276684, 276685, 276686
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00130

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "21.01"
    },
    "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": 20,
            "rows_produced_per_join": 20,
            "filtered": "100.00",
            "index_condition": "(`s2cart`.`cscart_products_categories`.`product_id` in (276667,276668,276669,276670,276671,276672,276673,276674,276675,276676,276677,276678,276679,276680,276681,276682,276683,276684,276685,276686))",
            "cost_info": {
              "read_cost": "12.01",
              "eval_cost": "2.00",
              "prefix_cost": "14.01",
              "data_read_per_join": "320"
            },
            "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": [
              "s2cart.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 1,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "5.00",
              "eval_cost": "0.10",
              "prefix_cost": "21.01",
              "data_read_per_join": "3K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`s2cart`.`cscart_categories`.`storefront_id` in (0,1)) and ((`s2cart`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`s2cart`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`s2cart`.`cscart_categories`.`usergroup_ids`))) and (`s2cart`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
276667 4936M
276668 4936M
276669 4936M
276670 4936M
276671 4936M
276672 4936M
276673 4936M
276674 4936M
276675 4936M
276676 4936M
276677 4936M
276678 4936M
276679 4936M
276680 4936M
276681 4936M
276682 4936M
276683 4936M
276684 4936M
276685 4936M
276686 4936M