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 = 7300 
WHERE 
  cscart_products_categories.product_id IN (
    98320, 98321, 98482, 98572, 98573, 98574, 
    98575, 98576, 98577, 98578, 98579, 
    98580, 98581, 98582, 98583, 98584, 
    98585, 98586, 98690, 98693, 98694, 
    98758, 99561, 100374, 100375, 100376, 
    100377, 100378, 100379, 100380, 100381, 
    100382, 100383, 100598, 100601, 101635, 
    101636, 101639, 101640, 101641, 101642, 
    101643, 101644, 101645, 101646, 101647, 
    101648, 101649
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00650

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "65.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": 73,
            "rows_produced_per_join": 73,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "7.59",
              "eval_cost": "7.30",
              "prefix_cost": "14.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 (98320,98321,98482,98572,98573,98574,98575,98576,98577,98578,98579,98580,98581,98582,98583,98584,98585,98586,98690,98693,98694,98758,99561,100374,100375,100376,100377,100378,100379,100380,100381,100382,100383,100598,100601,101635,101636,101639,101640,101641,101642,101643,101644,101645,101646,101647,101648,101649))"
          }
        },
        {
          "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": 73,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "18.25",
              "eval_cost": "7.30",
              "prefix_cost": "40.44",
              "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": 3,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "18.25",
              "eval_cost": "0.37",
              "prefix_cost": "65.99",
              "data_read_per_join": "9K"
            },
            "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
98320 7304M
98321 7304M
98482 7149M,7300,7182 0
98572 7302M
98573 7302M
98574 7302M
98575 7302M
98576 7302M
98577 7302M
98578 7302M
98579 7302M
98580 7302M
98581 7302M
98582 7302M
98583 7302M
98584 7302M
98585 7302M
98586 7302M
98690 7151M,7301
98693 7151M,7301
98694 7151M,7301
98758 7149M,7182,7300 0
99561 7302M
100374 7151M,7301
100375 7301,7151M
100376 7302M
100377 7302M
100378 7302M
100379 7302M
100380 7301,7151M
100381 7301,7151M
100382 7151M,7301
100383 7151M,7301
100598 7151M,7301
100601 7301,7151M
101635 7301,7151M
101636 7301,7151M
101639 7151M,7301
101640 7151M,7301
101641 7302M
101642 7302M
101643 7302M
101644 7151M,7301
101645 7151M,7301
101646 7151M,7301
101647 7151M,7301
101648 7151M,7301
101649 7301,7151M