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 = 7195 
WHERE 
  cscart_products_categories.product_id IN (
    99303, 99304, 99305, 99306, 99307, 99308, 
    99309, 99310, 99311, 99312, 99319, 
    99320, 99321, 99356, 99357, 99358, 
    99359, 99360, 99361, 99362, 99363, 
    99364, 99365, 99366, 99367, 99368, 
    99374, 99375, 99376, 99377, 99378, 
    99379, 99380, 99381, 99382, 99383, 
    99384, 99385, 99386, 99387, 99388, 
    99389, 99390, 99391, 99392, 99393, 
    99394, 99395
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00071

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "46.18"
    },
    "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": 51,
            "rows_produced_per_join": 51,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "5.38",
              "eval_cost": "5.10",
              "prefix_cost": "10.48",
              "data_read_per_join": "816"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (99303,99304,99305,99306,99307,99308,99309,99310,99311,99312,99319,99320,99321,99356,99357,99358,99359,99360,99361,99362,99363,99364,99365,99366,99367,99368,99374,99375,99376,99377,99378,99379,99380,99381,99382,99383,99384,99385,99386,99387,99388,99389,99390,99391,99392,99393,99394,99395))"
          }
        },
        {
          "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": 51,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "12.75",
              "eval_cost": "5.10",
              "prefix_cost": "28.33",
              "data_read_per_join": "816"
            },
            "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.75",
              "eval_cost": "0.26",
              "prefix_cost": "46.18",
              "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
99303 7254M
99304 7254M
99305 7254M
99306 7254M
99307 7254M
99308 7254M
99309 7254M
99310 7254M
99311 7254M
99312 7254M
99319 7331,7253M
99320 7252M
99321 7252M
99356 7222M
99357 7222M
99358 7222M
99359 7222M
99360 7222M
99361 7222M
99362 7222M
99363 7222M
99364 7222M
99365 7222M
99366 7222M
99367 7330,7285M
99368 7330,7285M
99374 7222M
99375 7222M
99376 7222M
99377 7222M
99378 7222M
99379 7222M
99380 7222M
99381 7222M
99382 7222M
99383 7222M
99384 7222M
99385 7222M
99386 7222M
99387 7222M
99388 7222M
99389 7222M
99390 7222M
99391 7222M
99392 7222M
99393 7222M
99394 7222M
99395 7222M