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 (
    20090, 20091, 20092, 20093, 20094, 18661, 
    18662, 19131, 18664, 20724, 20725, 
    20728, 20955, 20956, 20957, 20958, 
    20959, 22277, 20971, 21078, 21102, 
    20972, 20973, 20974
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00206

JSON explain

{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "table": {
          "table_name": "cscart_products_categories",
          "access_type": "range",
          "possible_keys": ["PRIMARY", "pt"],
          "key": "pt",
          "key_length": "3",
          "used_key_parts": ["product_id"],
          "rows": 24,
          "filtered": 100,
          "index_condition": "cscart_products_categories.product_id in (20090,20091,20092,20093,20094,18661,18662,19131,18664,20724,20725,20728,20955,20956,20957,20958,20959,22277,20971,21078,21102,20972,20973,20974)"
        }
      },
      {
        "table": {
          "table_name": "cscart_categories",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY", "c_status", "p_category_id"],
          "key": "PRIMARY",
          "key_length": "3",
          "used_key_parts": ["category_id"],
          "ref": ["lillyshop_lillyshop.cscart_products_categories.category_id"],
          "rows": 1,
          "filtered": 100,
          "attached_condition": "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')"
        }
      }
    ]
  }
}

Result

product_id category_ids
18661 1075M
18662 1075M
18664 1075M
19131 1075M
20090 1075M
20091 1075M
20092 1075M
20093 1075M
20094 1075M
20724 1075M
20725 1075M
20728 1075M
20955 1075M
20956 1075M
20957 1075M
20958 1075M
20959 1075M
20971 1075M
20972 1075M
20973 1075M
20974 1075M
21078 1075M
21102 1075M
22277 1075M