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 = 7284 
WHERE 
  cscart_products_categories.product_id IN (
    90714, 90720, 90713, 90719, 90728, 90729, 
    90717, 90723, 90725, 90727, 90712, 
    90718, 90586, 90587, 90730, 90731, 
    90724, 90726, 90716, 90722, 90592, 
    90593, 89243, 89244, 89253, 89254, 
    90588, 90590, 89245, 89246
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00199

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "47.08"
    },
    "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": 52,
            "rows_produced_per_join": 52,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "5.48",
              "eval_cost": "5.20",
              "prefix_cost": "10.68",
              "data_read_per_join": "832"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (90714,90720,90713,90719,90728,90729,90717,90723,90725,90727,90712,90718,90586,90587,90730,90731,90724,90726,90716,90722,90592,90593,89243,89244,89253,89254,90588,90590,89245,89246))"
          }
        },
        {
          "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": 52,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "13.00",
              "eval_cost": "5.20",
              "prefix_cost": "28.88",
              "data_read_per_join": "832"
            },
            "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": "13.00",
              "eval_cost": "0.26",
              "prefix_cost": "47.08",
              "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
89243 7330,7285M
89244 7330,7285M
89245 7286M
89246 7286M
89253 7330,7285M
89254 7330,7285M
90586 7286M
90587 7286M
90588 7287M
90590 7287M
90592 7287M
90593 7287M
90712 7330,7285M
90713 7330,7285M
90714 7330,7285M
90716 7330,7285M
90717 7330,7285M
90718 7330,7285M
90719 7330,7285M
90720 7330,7285M
90722 7330,7285M
90723 7330,7285M
90724 7330,7285M
90725 7330,7285M
90726 7330,7285M
90727 7330,7285M
90728 7330,7285M
90729 7330,7285M
90730 7330,7285M
90731 7330,7285M