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 (
    186231, 109593, 103373, 193286, 90945, 
    168820, 96320, 90935, 120747, 98810, 
    98813, 98373, 91613, 98734, 104426, 
    91612, 167731, 109606, 98342, 155430, 
    239125, 133812, 196685, 168828, 138080, 
    133813, 133814, 138365, 125527, 221443, 
    138079, 111401
  ) 
GROUP BY 
  products_categories.product_id

Query time 0.00541

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "54.77"
    },
    "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": 99,
            "rows_produced_per_join": 99,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "10.22",
              "eval_cost": "9.90",
              "prefix_cost": "20.12",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`goimagine`.`products_categories`.`product_id` in (186231,109593,103373,193286,90945,168820,96320,90935,120747,98810,98813,98373,91613,98734,104426,91612,167731,109606,98342,155430,239125,133812,196685,168828,138080,133813,133814,138365,125527,221443,138079,111401))"
          }
        },
        {
          "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": 4,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "24.75",
              "eval_cost": "0.50",
              "prefix_cost": "54.77",
              "data_read_per_join": "12K"
            },
            "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
90935 71,4932,45M
90945 4939,311M
91612 4934,88M
91613 4934,74M
96320 4932,4939,4940,87M
98342 2,4932,4939,4940,40M
98373 4939,208M
98734 72,4934,74M
98810 349,4937,357M
98813 4939,388M
103373 208,4939,4940,46M
104426 18,4932,4939,4940,175M
109593 206,4939,208M
109606 208,4939,4940,46M
111401 4939,205M
120747 4932,4940,253M
125527 17,4939,147M
133812 4939,8274,85M
133813 4939,8274,85M
133814 4939,8274,85M
138079 4939,8274,85M
138080 4939,8274,85M
138365 4939,8274,85M
155430 176,4939,4940,18M
167731 78,11030,8M
168820 4939,18M
168828 368,4932,4940,14M
186231 12955,71M
193286 12955,71M
196685 208,12955,195M
221443 4939,10891,87M
239125 4932,7651,195M