SELECT 
  products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      products_categories.link_type = "M", 
      CONCAT(
        products_categories.category_id, 
        "M"
      ), 
      products_categories.category_id
    )
  ) AS category_ids 
FROM 
  products_categories 
  INNER JOIN categories ON categories.category_id = products_categories.category_id 
  AND categories.storefront_id IN (0, 1) 
  AND (
    categories.usergroup_ids = '' 
    OR FIND_IN_SET(0, categories.usergroup_ids) 
    OR FIND_IN_SET(1, categories.usergroup_ids)
  ) 
  AND categories.status IN ('A', 'H') 
WHERE 
  products_categories.product_id IN (
    267296, 267324, 267308, 281009, 267307, 
    267306, 285546, 269043, 269050, 267309, 
    267317, 267303, 267322, 276327, 267331, 
    280993, 267313, 282231, 281008, 267321, 
    267328, 273575, 269018, 267305, 267326, 
    269015, 267323, 267320, 267316, 267318, 
    269010, 267298, 267332, 267315, 267319, 
    269037, 275624, 269039, 267330, 300376, 
    269016, 277405, 269011, 285592, 269003
  ) 
GROUP BY 
  products_categories.product_id

Query time 0.00158

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "72.39"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "link_type",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 131,
            "rows_produced_per_join": 131,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "13.44",
              "eval_cost": "13.10",
              "prefix_cost": "26.54",
              "data_read_per_join": "2K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`goimagine`.`products_categories`.`product_id` in (267296,267324,267308,281009,267307,267306,285546,269043,269050,267309,267317,267303,267322,276327,267331,280993,267313,282231,281008,267321,267328,273575,269018,267305,267326,269015,267323,267320,267316,267318,269010,267298,267332,267315,267319,269037,275624,269039,267330,300376,269016,277405,269011,285592,269003))"
          }
        },
        {
          "table": {
            "table_name": "categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "goimagine.products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 6,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "32.75",
              "eval_cost": "0.66",
              "prefix_cost": "72.39",
              "data_read_per_join": "17K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`goimagine`.`categories`.`storefront_id` in (0,1)) and ((`goimagine`.`categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`goimagine`.`categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`goimagine`.`categories`.`usergroup_ids`))) and (`goimagine`.`categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
267296 27,20223,6718M
267298 20242,6718M
267303 27,20223,6718M
267305 27,20223,6718M
267306 6718,20223,5M
267307 27,20223,6718M
267308 27,20223,6718M
267309 27,20223,6718M
267313 6718,20223,5M
267315 6718,20223,27M
267316 20242,6718M
267317 6718,20223,27M
267318 6718,20223,27M
267319 6718,20223,20224,27M
267320 27,20223,6718M
267321 6718,20223,27M
267322 6718,20223,27M
267323 6718,20223,27M
267324 27,20223,6718M
267326 27,20223,20224,6718M
267328 5,20223,6718M
267330 6718,20223,20224,27M
267331 27,20223,6718M
267332 20223,6718M
269003 2566M
269010 6718,20224,5M
269011 20223,6718M
269015 6719,20224,27M
269016 6719,20224,27M
269018 6718,20224,5M
269037 6718,20224,27M
269039 6719,20224,5M
269043 6718,20223,27M
269050 6718,20223,27M
273575 27,20223,6718M
275624 6718,20224,5M
276327 6718,20224,27M
277405 6718,20223,20224,27M
280993 6718,20223,27M
281008 20223,6718M
281009 20223,6718M
282231 20223,6718M
285546 6718,20223,27M
285592 6718,20223,20224,27M
300376 6718,20223,27M