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 = 9965 
WHERE 
  cscart_products_categories.product_id IN (
    414502, 424699, 381632, 431672, 414375, 
    393012, 396068, 393013, 427473, 366897, 
    392222, 414480, 434596, 414400, 391702, 
    387084, 434591, 434595, 435213, 434592, 
    414498, 434594, 434593, 414414, 432460, 
    432542, 432589, 432449, 432642, 432668, 
    432523, 432652, 432688, 432694
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00277

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "118.67"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "link_type",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 42,
            "rows_produced_per_join": 42,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "9.47",
              "eval_cost": "8.40",
              "prefix_cost": "17.87",
              "data_read_per_join": "672"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`webmarco`.`cscart_products_categories`.`product_id` in (414502,424699,381632,431672,414375,393012,396068,393013,427473,366897,392222,414480,434596,414400,391702,387084,434591,434595,435213,434592,414498,434594,434593,414414,432460,432542,432589,432449,432642,432668,432523,432652,432688,432694))"
          }
        },
        {
          "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",
              "webmarco.cscart_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 42,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "42.00",
              "eval_cost": "8.40",
              "prefix_cost": "68.27",
              "data_read_per_join": "672"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        },
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "webmarco.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 2,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "42.00",
              "eval_cost": "0.42",
              "prefix_cost": "118.67",
              "data_read_per_join": "12K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`webmarco`.`cscart_categories`.`storefront_id` in (0,1)) and ((`webmarco`.`cscart_categories`.`usergroup_ids` = '') or find_in_set(0,`webmarco`.`cscart_categories`.`usergroup_ids`) or find_in_set(1,`webmarco`.`cscart_categories`.`usergroup_ids`)) and (`webmarco`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
366897 9965,10229M 0
381632 9966M
387084 9986M
391702 9986M
392222 9971M
393012 9986M
393013 9986M
396068 9965M 0
414375 2769,9965M 0
414400 9986M
414414 9965M 0
414480 9965M 0
414498 9965M 0
414502 9986M
424699 2902,9746,9986M
427473 9994M
431672 9986,2722M
432449 9994M
432460 9994M
432523 9994M
432542 9994M
432589 9994M
432642 9993M
432652 9983M
432668 9983M
432688 9983M
432694 9983M
434591 9994M
434592 9977M
434593 9977M
434594 9977M
434595 9977M
434596 9977M
435213 9986M