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 = 7237 
WHERE 
  cscart_products_categories.product_id IN (
    96259, 96260, 96261, 96262, 96263, 96264, 
    96265, 96266, 96267, 96268, 96269, 
    96270, 96271, 96272, 96273, 96274, 
    96275, 96276, 96277, 96278, 96279, 
    96280, 96281, 96282, 96283, 96284, 
    96285, 96286, 96287, 96288, 96289, 
    96290, 96291, 96292, 96293, 96294, 
    96522, 96523, 96524, 96525, 96526, 
    96527, 96528, 96574, 96575, 96576, 
    96577, 96578
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00139

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "43.48"
    },
    "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": 48,
            "rows_produced_per_join": 48,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "5.08",
              "eval_cost": "4.80",
              "prefix_cost": "9.88",
              "data_read_per_join": "768"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (96259,96260,96261,96262,96263,96264,96265,96266,96267,96268,96269,96270,96271,96272,96273,96274,96275,96276,96277,96278,96279,96280,96281,96282,96283,96284,96285,96286,96287,96288,96289,96290,96291,96292,96293,96294,96522,96523,96524,96525,96526,96527,96528,96574,96575,96576,96577,96578))"
          }
        },
        {
          "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",
              "nuie_scalesta_net.cscart_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 48,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "12.00",
              "eval_cost": "4.80",
              "prefix_cost": "26.68",
              "data_read_per_join": "768"
            },
            "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": [
              "nuie_scalesta_net.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 2,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "12.00",
              "eval_cost": "0.24",
              "prefix_cost": "43.48",
              "data_read_per_join": "6K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`nuie_scalesta_net`.`cscart_categories`.`storefront_id` in (0,1)) and ((`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`nuie_scalesta_net`.`cscart_categories`.`usergroup_ids`))) and (`nuie_scalesta_net`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
96259 7270M
96260 7272M
96261 7272M
96262 7270M
96263 7272M
96264 7272M
96265 7270M
96266 7270M
96267 7270M
96268 7270M
96269 7270M
96270 7270M
96271 7270M
96272 7270M
96273 7270M
96274 7270M
96275 7270M
96276 7270M
96277 7270M
96278 7270M
96279 7270M
96280 7270M
96281 7270M
96282 7270M
96283 7268M
96284 7268M
96285 7268M
96286 7268M
96287 7270M
96288 7270M
96289 7270M
96290 7272M
96291 7272M
96292 7270M
96293 7268M
96294 7274M
96522 7239M
96523 7239M
96524 7239M
96525 7239M
96526 7239M
96527 7239M
96528 7239M
96574 7270M
96575 7270M
96576 7272M
96577 7270M
96578 7270M