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 (
    3741, 3742, 3743, 3744, 3745, 3746, 3747, 
    3748, 3749, 3750, 3751, 3752, 3753, 
    3755, 3756, 3757, 3758, 3759, 3760, 
    3761, 3762, 3764, 3765, 3768, 3769, 
    3772, 1470
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00083

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "97.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": 27,
            "rows_produced_per_join": 27,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (3741,3742,3743,3744,3745,3746,3747,3748,3749,3750,3751,3752,3753,3755,3756,3757,3758,3759,3760,3761,3762,3764,3765,3768,3769,3772,1470))",
            "cost_info": {
              "read_cost": "59.41",
              "eval_cost": "5.40",
              "prefix_cost": "64.81",
              "data_read_per_join": "432"
            },
            "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": 5,
            "filtered": "20.00",
            "cost_info": {
              "read_cost": "27.00",
              "eval_cost": "1.08",
              "prefix_cost": "97.21",
              "data_read_per_join": "14K"
            },
            "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
1470 183M
3741 189M
3742 477M
3743 477M
3744 40M
3745 40M
3746 547M
3747 451M
3748 451M
3749 451M
3750 451M
3751 451M
3752 451M
3753 451M
3755 451M
3756 451M
3757 451M
3758 451M
3759 451M
3760 451M
3761 451M
3762 451M
3764 451M
3765 189M
3768 163M
3769 481M
3772 482M