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 = 191 
WHERE 
  q_products_categories.product_id IN (
    9188, 9189, 9190, 9191, 9192, 9193, 9204, 
    9205, 9206, 9207, 9208, 9209, 9210, 
    9211, 9212, 9213, 9221, 9222, 9224, 
    9225, 9226, 9227, 9228, 9229, 9230, 
    9231, 9232, 9233, 9234, 9235, 9236, 
    9237
  ) 
GROUP BY 
  q_products_categories.product_id

Query time 0.00080

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "244.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": 56,
            "rows_produced_per_join": 56,
            "filtered": "100.00",
            "index_condition": "(`portal`.`q_products_categories`.`product_id` in (9188,9189,9190,9191,9192,9193,9204,9205,9206,9207,9208,9209,9210,9211,9212,9213,9221,9222,9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237))",
            "cost_info": {
              "read_cost": "99.21",
              "eval_cost": "11.20",
              "prefix_cost": "110.41",
              "data_read_per_join": "896"
            },
            "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": 56,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "56.00",
              "eval_cost": "11.20",
              "prefix_cost": "177.61",
              "data_read_per_join": "896"
            },
            "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": "56.00",
              "eval_cost": "2.24",
              "prefix_cost": "244.81",
              "data_read_per_join": "29K"
            },
            "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
9188 418M
9189 418M
9190 418M
9191 418M
9192 418M
9193 418M
9204 418M
9205 418M
9206 418M
9207 418M
9208 418M
9209 418M
9210 418M
9211 419M
9212 419M
9213 418M
9221 418M
9222 418M
9224 418M
9225 418M
9226 418M
9227 418M
9228 418M
9229 418M
9230 418M
9231 418M
9232 418M
9233 418M
9234 418M
9235 418M
9236 418M
9237 418M