SELECT 
  tmall_products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      tmall_products_categories.link_type = "M", 
      CONCAT(
        tmall_products_categories.category_id, 
        "M"
      ), 
      tmall_products_categories.category_id
    )
  ) AS category_ids 
FROM 
  tmall_products_categories 
  INNER JOIN tmall_categories ON tmall_categories.category_id = tmall_products_categories.category_id 
  AND tmall_categories.storefront_id IN (0, 1) 
  AND (
    tmall_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, tmall_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, tmall_categories.usergroup_ids
    )
  ) 
  AND tmall_categories.status IN ('A', 'H') 
WHERE 
  tmall_products_categories.product_id IN (
    18, 16, 4, 5, 23, 24, 1, 22, 172, 175, 173, 
    25, 161, 163, 133, 132, 125, 120, 223, 
    225
  ) 
GROUP BY 
  tmall_products_categories.product_id

Query time 0.00827

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost": 0.099349865,
    "nested_loop": [
      {
        "table": {
          "table_name": "tmall_products_categories",
          "access_type": "range",
          "possible_keys": ["PRIMARY", "pt"],
          "key": "pt",
          "key_length": "3",
          "used_key_parts": ["product_id"],
          "loops": 1,
          "rows": 24,
          "cost": 0.042287438,
          "filtered": 100,
          "index_condition": "tmall_products_categories.product_id in (18,16,4,5,23,24,1,22,172,175,173,25,161,163,133,132,125,120,223,225)"
        }
      },
      {
        "table": {
          "table_name": "tmall_categories",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY", "c_status", "p_category_id"],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["category_id"],
          "ref": ["tmall.tmall_products_categories.category_id"],
          "loops": 24,
          "rows": 1,
          "cost": 0.041701424,
          "filtered": 100,
          "attached_condition": "tmall_categories.storefront_id in (0,1) and (tmall_categories.usergroup_ids = '' or find_in_set(0,tmall_categories.usergroup_ids) or find_in_set(1,tmall_categories.usergroup_ids)) and tmall_categories.`status` in ('A','H')"
        }
      }
    ]
  }
}

Result

product_id category_ids
1 190M
4 190M
5 191M
16 194M
18 194M
22 195M
23 195M
24 195M
25 195M
120 237M
125 237M
132 179,182M
133 182,179M
161 199,198M
163 199,198M
172 199M
173 199M
175 199M
223 165M
225 165M