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 (
    30175, 30176, 30177, 30178, 30179, 30180, 
    30181, 30182, 30183, 30184, 30185, 
    30186, 30187, 30188, 30189, 30190
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00055

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "127.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": 43,
            "rows_produced_per_join": 43,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (30175,30176,30177,30178,30179,30180,30181,30182,30183,30184,30185,30186,30187,30188,30189,30190))",
            "cost_info": {
              "read_cost": "67.61",
              "eval_cost": "8.60",
              "prefix_cost": "76.21",
              "data_read_per_join": "688"
            },
            "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": "43.00",
              "eval_cost": "1.72",
              "prefix_cost": "127.81",
              "data_read_per_join": "22K"
            },
            "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
30175 14M
30176 14M
30177 14M
30178 14M
30179 14M
30180 14M
30181 16M
30182 14M
30183 14M
30184 14M
30185 14M
30186 14M
30187 16M
30188 16M
30189 16M
30190 16M