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 = 7257 
WHERE 
  cscart_products_categories.product_id IN (
    90321, 90322, 87957, 88065, 88142, 88145, 
    88074, 88069, 87878, 88075, 88025, 
    84696, 88938, 87996, 84699, 88516, 
    88519, 88073, 88940, 88040, 84703, 
    84706, 88082, 91053, 88941, 87958, 
    88068, 87951, 88067, 88512
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00148

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "74.99"
    },
    "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": 83,
            "rows_produced_per_join": 83,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "8.59",
              "eval_cost": "8.30",
              "prefix_cost": "16.89",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (90321,90322,87957,88065,88142,88145,88074,88069,87878,88075,88025,84696,88938,87996,84699,88516,88519,88073,88940,88040,84703,84706,88082,91053,88941,87958,88068,87951,88067,88512))"
          }
        },
        {
          "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": 83,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "20.75",
              "eval_cost": "8.30",
              "prefix_cost": "45.94",
              "data_read_per_join": "1K"
            },
            "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": 4,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "20.75",
              "eval_cost": "0.42",
              "prefix_cost": "74.99",
              "data_read_per_join": "10K"
            },
            "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
84696 7241,7309,7346,7208M
84699 7241,7309,7346,7208M
84703 7241,7309,7346,7208M
84706 7241,7309,7346,7208M
87878 7241,7309,7346,7208M
87951 7258M
87957 7258M
87958 7345,7347,7259M
87996 7258M
88025 7258M
88040 7258M
88065 7258M
88067 7320,7260M
88068 7320,7260M
88069 7320,7260M
88073 7258M
88074 7258M
88075 7345,7347,7259M
88082 7345,7347,7259M
88142 7241,7309,7346,7208M
88145 7241,7309,7346,7208M
88512 7241,7309,7346,7208M
88516 7241,7309,7346,7208M
88519 7241,7309,7346,7208M
88938 7241,7309,7346,7208M
88940 7241,7309,7346,7208M
88941 7241,7309,7346,7208M
90321 7265,7247M
90322 7265,7247M
91053 7241,7309,7346,7208M