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 (
    32753, 32754, 32755, 32756, 32757, 32758, 
    32759, 32760, 32761, 32762, 32763, 
    32764, 32765, 32766, 32767, 32768, 
    32769, 32770, 32771, 32772, 32773, 
    32774, 32775, 32776, 32777, 32778, 
    32779, 32780, 32781, 32782, 32783, 
    32784
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00086

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "138.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": 41,
            "rows_produced_per_join": 41,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (32753,32754,32755,32756,32757,32758,32759,32760,32761,32762,32763,32764,32765,32766,32767,32768,32769,32770,32771,32772,32773,32774,32775,32776,32777,32778,32779,32780,32781,32782,32783,32784))",
            "cost_info": {
              "read_cost": "81.21",
              "eval_cost": "8.20",
              "prefix_cost": "89.41",
              "data_read_per_join": "656"
            },
            "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": 8,
            "filtered": "20.00",
            "cost_info": {
              "read_cost": "41.00",
              "eval_cost": "1.64",
              "prefix_cost": "138.61",
              "data_read_per_join": "21K"
            },
            "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
32753 97M
32754 97M
32755 97M
32756 97M
32757 97M
32758 97M
32759 97M
32760 96M
32761 96M
32762 96M
32763 96M
32764 97M
32765 97M
32766 97M
32767 97M
32768 97M
32769 97M
32770 97M
32771 97M
32772 96M
32773 96M
32774 96M
32775 96M
32776 96M
32777 96M
32778 96M
32779 96M
32780 96M
32781 96M
32782 96M
32783 96M
32784 96M