SELECT 
  cscart_products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      cscart_products_categories.link_type = "M", 
      CONCAT(
        cscart_products_categories.category_id, 
        "M"
      ), 
      cscart_products_categories.category_id
    )
  ) AS category_ids, 
  product_position_source.position AS position 
FROM 
  cscart_products_categories 
  INNER JOIN cscart_categories ON cscart_categories.category_id = cscart_products_categories.category_id 
  AND cscart_categories.storefront_id IN (0, 1) 
  AND (
    cscart_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_categories.usergroup_ids
    )
  ) 
  AND cscart_categories.status IN ('A', 'H') 
  LEFT JOIN cscart_products_categories AS product_position_source ON cscart_products_categories.product_id = product_position_source.product_id 
  AND product_position_source.category_id = 291 
WHERE 
  cscart_products_categories.product_id IN (
    10708, 10709, 10710, 10711, 10712, 10301, 
    10302, 10303, 10304, 9945, 10601, 9727, 
    9728, 9729, 9730, 9731, 9732, 9733, 
    10181, 9734, 9735, 9724, 10370, 10372, 
    10374, 10376, 10377, 10378, 10379, 
    10380, 10381, 10371
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00127

JSON explain

{
  "query_block": {
    "select_id": 1,
    "table": {
      "table_name": "cscart_products_categories",
      "access_type": "range",
      "possible_keys": ["PRIMARY", "pt"],
      "key": "pt",
      "key_length": "3",
      "used_key_parts": ["product_id"],
      "rows": 32,
      "filtered": 100,
      "index_condition": "cscart_products_categories.product_id in (10708,10709,10710,10711,10712,10301,10302,10303,10304,9945,10601,9727,9728,9729,9730,9731,9732,9733,10181,9734,9735,9724,10370,10372,10374,10376,10377,10378,10379,10380,10381,10371)"
    },
    "table": {
      "table_name": "product_position_source",
      "access_type": "eq_ref",
      "possible_keys": ["PRIMARY", "pt"],
      "key": "PRIMARY",
      "key_length": "6",
      "used_key_parts": ["category_id", "product_id"],
      "ref": [
        "const",
        "noframes_angrybeaver.cscart_products_categories.product_id"
      ],
      "rows": 1,
      "filtered": 100
    },
    "table": {
      "table_name": "cscart_categories",
      "access_type": "eq_ref",
      "possible_keys": ["PRIMARY", "c_status", "p_category_id"],
      "key": "PRIMARY",
      "key_length": "3",
      "used_key_parts": ["category_id"],
      "ref": ["noframes_angrybeaver.cscart_products_categories.category_id"],
      "rows": 1,
      "filtered": 100,
      "attached_condition": "cscart_categories.storefront_id in (0,1) and (cscart_categories.usergroup_ids = '' or find_in_set(0,cscart_categories.usergroup_ids) or find_in_set(1,cscart_categories.usergroup_ids)) and cscart_categories.`status` in ('A','H')"
    }
  }
}

Result

product_id category_ids position
9724 1671M
9727 1671M
9728 1671M
9729 1671M
9730 1671M
9731 1671M
9732 1671M
9733 1671M
9734 1671M
9735 1671M
9945 1671M
10181 1671M
10301 1644M
10302 1644M
10303 1644M
10304 1644M
10370 1652M
10371 1652M
10372 1652M
10374 1652M
10376 1652M
10377 1652M
10378 1652M
10379 1652M
10380 1652M
10381 1652M
10601 1671M
10708 1662M
10709 1662M
10710 1662M
10711 1662M
10712 1662M