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 (
    8501, 8503, 8504, 8506, 8507, 8508, 8509, 
    8510, 8511, 8512, 8514, 8515, 8516, 
    8517, 8518, 8519, 8521, 8477, 8476, 
    8474, 8377, 8376, 8375, 8374, 8368, 
    8367, 8272, 8271, 8270, 8269, 8268, 
    8267
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00091

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "117.81"
    },
    "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": 33,
            "rows_produced_per_join": 33,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (8501,8503,8504,8506,8507,8508,8509,8510,8511,8512,8514,8515,8516,8517,8518,8519,8521,8477,8476,8474,8377,8376,8375,8374,8368,8367,8272,8271,8270,8269,8268,8267))",
            "cost_info": {
              "read_cost": "71.61",
              "eval_cost": "6.60",
              "prefix_cost": "78.21",
              "data_read_per_join": "528"
            },
            "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": 6,
            "filtered": "20.00",
            "cost_info": {
              "read_cost": "33.00",
              "eval_cost": "1.32",
              "prefix_cost": "117.81",
              "data_read_per_join": "17K"
            },
            "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
8267 181M
8268 180M
8269 114M
8270 13,96M
8271 82M
8272 145M
8367 145M
8368 393M
8374 366M
8375 366M
8376 366M
8377 366M
8474 552M
8476 49,145M
8477 145M
8501 181M
8503 181M
8504 145M
8506 145M
8507 145M
8508 139M
8509 525M
8510 180M
8511 180M
8512 525M
8514 145M
8515 523M
8516 145M
8517 525M
8518 525M
8519 181M
8521 145M