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 (
    9170, 9171, 9172, 9173, 9174, 9175, 9176, 
    9177, 9178, 9179, 9180, 9181, 9182, 
    9183, 9185, 9186, 9187, 9188, 9189, 
    9190, 9191, 9192, 9193, 9194, 9195, 
    9196, 9197, 9198, 9199, 9200, 9201, 
    9202
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00094

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "167.21"
    },
    "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": 52,
            "rows_produced_per_join": 52,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (9170,9171,9172,9173,9174,9175,9176,9177,9178,9179,9180,9181,9182,9183,9185,9186,9187,9188,9189,9190,9191,9192,9193,9194,9195,9196,9197,9198,9199,9200,9201,9202))",
            "cost_info": {
              "read_cost": "94.41",
              "eval_cost": "10.40",
              "prefix_cost": "104.81",
              "data_read_per_join": "832"
            },
            "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": "52.00",
              "eval_cost": "2.08",
              "prefix_cost": "167.21",
              "data_read_per_join": "27K"
            },
            "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
9170 200M
9171 200M
9172 200M
9173 200M
9174 200M
9175 200M
9176 200M
9177 200M
9178 200M
9179 200M
9180 429M
9181 429M
9182 429M
9183 429M
9185 429M
9186 429M
9187 429M
9188 418M
9189 418M
9190 418M
9191 418M
9192 418M
9193 418M
9194 429M
9195 554M
9196 554M
9197 554M
9198 554M
9199 554M
9200 554M
9201 554M
9202 554M