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, 
  product_position_source.position AS position 
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') 
  LEFT JOIN q_products_categories AS product_position_source ON q_products_categories.product_id = product_position_source.product_id 
  AND product_position_source.category_id = 190 
WHERE 
  q_products_categories.product_id IN (
    30355, 30359, 30387, 30392, 30393, 30399, 
    30401, 30402, 30403, 30406, 30407, 
    30668, 30671, 30672, 30675, 30676, 
    30682, 30686, 30694, 30695, 30699, 
    30701, 30702, 30704, 30705, 30707, 
    30708, 30711, 30712, 30713
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00105

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "246.61"
    },
    "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": 57,
            "rows_produced_per_join": 57,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (30355,30359,30387,30392,30393,30399,30401,30402,30403,30406,30407,30668,30671,30672,30675,30676,30682,30686,30694,30695,30699,30701,30702,30704,30705,30707,30708,30711,30712,30713))",
            "cost_info": {
              "read_cost": "98.41",
              "eval_cost": "11.40",
              "prefix_cost": "109.81",
              "data_read_per_join": "912"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        },
        {
          "table": {
            "table_name": "product_position_source",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id",
              "product_id"
            ],
            "key_length": "6",
            "ref": [
              "const",
              "portal.q_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 57,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "57.00",
              "eval_cost": "11.40",
              "prefix_cost": "178.21",
              "data_read_per_join": "912"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        },
        {
          "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": 11,
            "filtered": "20.00",
            "cost_info": {
              "read_cost": "57.00",
              "eval_cost": "2.28",
              "prefix_cost": "246.61",
              "data_read_per_join": "30K"
            },
            "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 position
30355 418M
30359 428M
30387 419M
30392 199M
30393 419M
30399 194,193M
30401 202M
30402 193M
30403 193M
30406 429,431M
30407 429M
30668 204M
30671 201M
30672 204M
30675 204M
30676 202M
30682 201M
30686 201M
30694 199M
30695 201M
30699 419M
30701 419M
30702 201M
30704 204M
30705 428,413M
30707 419M
30708 201M
30711 419M
30712 201M
30713 201M