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 = 7230 
WHERE 
  cscart_products_categories.product_id IN (
    86866, 86300, 86326, 86270, 86291, 86299, 
    86325, 86244, 86269, 86290, 86292, 
    86318, 87736, 86346, 86350, 86256, 
    86309, 86369, 86374, 86298, 86324, 
    86311, 86327, 86260, 86308, 86243, 
    86378, 86246, 86268, 86289
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00145

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "38.97"
    },
    "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": 43,
            "rows_produced_per_join": 43,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "4.58",
              "eval_cost": "4.30",
              "prefix_cost": "8.88",
              "data_read_per_join": "688"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (86866,86300,86326,86270,86291,86299,86325,86244,86269,86290,86292,86318,87736,86346,86350,86256,86309,86369,86374,86298,86324,86311,86327,86260,86308,86243,86378,86246,86268,86289))"
          }
        },
        {
          "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": 43,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "10.75",
              "eval_cost": "4.30",
              "prefix_cost": "23.93",
              "data_read_per_join": "688"
            },
            "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": "10.75",
              "eval_cost": "0.22",
              "prefix_cost": "38.98",
              "data_read_per_join": "5K"
            },
            "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
86243 7228,7230M 0
86244 7228,7230M 0
86246 7228,7230M 0
86256 7231M
86260 7231M
86268 7231M
86269 7231M
86270 7231M
86289 7231M
86290 7231M
86291 7231M
86292 7231M
86298 7231M
86299 7231M
86300 7231M
86308 7231M
86309 7231M
86311 7231M
86318 7231M
86324 7231M
86325 7231M
86326 7231M
86327 7231M
86346 7231M
86350 7231M
86369 7228,7230,7233M 0
86374 7228,7230,7236M 0
86378 7228,7230,7236M 0
86866 7228,7230,7233M 0
87736 7228,7230,7233M 0