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 (
    29907, 30158, 30160, 30161, 30162, 30163, 
    30164, 30165, 30166, 30167, 30168, 
    30169, 30171, 30172, 30173, 30174
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00069

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "156.41"
    },
    "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": 54,
            "rows_produced_per_join": 54,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (29907,30158,30160,30161,30162,30163,30164,30165,30166,30167,30168,30169,30171,30172,30173,30174))",
            "cost_info": {
              "read_cost": "80.81",
              "eval_cost": "10.80",
              "prefix_cost": "91.61",
              "data_read_per_join": "864"
            },
            "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": 10,
            "filtered": "20.00",
            "cost_info": {
              "read_cost": "54.00",
              "eval_cost": "2.16",
              "prefix_cost": "156.41",
              "data_read_per_join": "28K"
            },
            "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
29907 251,459M
30158 14M
30160 14M
30161 14M
30162 14M
30163 14M
30164 14M
30165 14M
30166 14M
30167 301M
30168 14M
30169 14M
30171 14M
30172 413M
30173 14M
30174 14M