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 = 7336 
WHERE 
  cscart_products_categories.product_id IN (
    98755, 98756, 98757, 99509, 99510, 99513, 
    99514, 99517, 99518, 99653, 99654, 
    99655, 99656, 99657, 99658, 99659, 
    99660, 99661, 99662, 99663, 99664, 
    99665, 99666, 99667, 99668, 100504, 
    100505, 100506, 100507, 100508
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.01530

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "59.68"
    },
    "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": 66,
            "rows_produced_per_join": 66,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "6.88",
              "eval_cost": "6.60",
              "prefix_cost": "13.48",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (98755,98756,98757,99509,99510,99513,99514,99517,99518,99653,99654,99655,99656,99657,99658,99659,99660,99661,99662,99663,99664,99665,99666,99667,99668,100504,100505,100506,100507,100508))"
          }
        },
        {
          "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": 66,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "16.50",
              "eval_cost": "6.60",
              "prefix_cost": "36.58",
              "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": "16.50",
              "eval_cost": "0.33",
              "prefix_cost": "59.68",
              "data_read_per_join": "8K"
            },
            "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
98755 7217M,7337
98756 7217M,7337
98757 7337,7217M
99509 7338,7313,7219M
99510 7338,7313,7219M
99513 7338,7313,7219M
99514 7338,7313,7219M
99517 7338,7219M,7313
99518 7338,7219M,7313
99653 7217M,7337
99654 7217M,7337
99655 7217M,7337
99656 7337,7217M
99657 7217M,7337
99658 7217M,7337
99659 7217M,7337
99660 7217M,7337
99661 7217M,7337
99662 7217M,7337
99663 7337,7217M
99664 7217M,7337
99665 7217M,7337
99666 7217M,7337
99667 7337,7217M
99668 7337,7217M
100504 7217M,7337
100505 7337,7217M
100506 7337,7217M
100507 7337,7217M
100508 7337,7217M