SELECT 
  q_products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      q_products_categories.link_type = "M", 
      CONCAT(
        q_products_categories.category_id, 
        "M"
      ), 
      q_products_categories.category_id
    )
  ) AS category_ids 
FROM 
  q_products_categories 
  INNER JOIN q_categories ON q_categories.category_id = q_products_categories.category_id 
  AND (
    q_categories.usergroup_ids = '' 
    OR FIND_IN_SET(0, q_categories.usergroup_ids) 
    OR FIND_IN_SET(1, q_categories.usergroup_ids)
  ) 
  AND q_categories.status IN ('A', 'H') 
WHERE 
  q_products_categories.product_id IN (
    32622, 32623, 32624, 32625, 32626, 32627, 
    32628, 32629, 32630, 32631, 32632, 
    32633, 32634, 32635, 32636, 32637, 
    32638, 32639, 32640, 32641, 32642, 
    32643, 32644, 32645, 32646, 32647, 
    32648, 32649, 32650, 32651, 32652, 
    32653
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00081

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "125.61"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "q_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 36,
            "rows_produced_per_join": 36,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (32622,32623,32624,32625,32626,32627,32628,32629,32630,32631,32632,32633,32634,32635,32636,32637,32638,32639,32640,32641,32642,32643,32644,32645,32646,32647,32648,32649,32650,32651,32652,32653))",
            "cost_info": {
              "read_cost": "75.21",
              "eval_cost": "7.20",
              "prefix_cost": "82.41",
              "data_read_per_join": "576"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        },
        {
          "table": {
            "table_name": "q_categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "portal.q_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 7,
            "filtered": "20.00",
            "cost_info": {
              "read_cost": "36.00",
              "eval_cost": "1.44",
              "prefix_cost": "125.61",
              "data_read_per_join": "19K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "(((`portal`.`q_categories`.`usergroup_ids` = '') or find_in_set(0,`portal`.`q_categories`.`usergroup_ids`) or find_in_set(1,`portal`.`q_categories`.`usergroup_ids`)) and (`portal`.`q_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
32622 97M
32623 96M
32624 96M
32625 96M
32626 96M
32627 96M
32628 96M
32629 96M
32630 96M
32631 97M
32632 97M
32633 97M
32634 97M
32635 96M
32636 96M
32637 96M
32638 96M
32639 96M
32640 96M
32641 96M
32642 96M
32643 96M
32644 96M
32645 97M
32646 97M
32647 97M
32648 97M
32649 97M
32650 96M
32651 96M
32652 96M
32653 96M