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 (
    34232, 34233, 34234, 34235, 34236, 34237, 
    34238, 34239, 34241, 34242, 34243, 
    34245, 34246, 34247, 34248, 34249, 
    34250, 34251, 34252, 34253, 34254, 
    34255, 34256, 34257, 34258, 34259, 
    34260, 34261, 34262, 34263
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00107

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "123.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 (34232,34233,34234,34235,34236,34237,34238,34239,34241,34242,34243,34245,34246,34247,34248,34249,34250,34251,34252,34253,34254,34255,34256,34257,34258,34259,34260,34261,34262,34263))",
            "cost_info": {
              "read_cost": "73.21",
              "eval_cost": "7.20",
              "prefix_cost": "80.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": "123.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
34232 194M
34233 586M
34234 145M
34235 586M
34236 586M
34237 586M
34238 145M
34239 131,130M
34241 419M
34242 142M
34243 140M
34245 586M
34246 10M
34247 10M
34248 202M
34249 132M
34250 132M
34251 366M
34252 366M
34253 366M
34254 366M
34255 134M
34256 591M
34257 591M
34258 590M
34259 590M
34260 134M
34261 586M
34262 11M
34263 139M