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 = 7210 
WHERE 
  cscart_products_categories.product_id IN (
    97608, 97609, 97610, 97611, 97612, 97613, 
    97614, 97615, 97616, 97617, 97618, 
    97619, 97620, 97621, 97622, 97623, 
    97624, 97625, 97626, 97627, 97629, 
    97630, 97631, 97632, 97633, 97634, 
    97635, 97636, 97637, 97638
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00212

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "31.49"
    },
    "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": 55,
            "rows_produced_per_join": 55,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "5.78",
              "eval_cost": "5.50",
              "prefix_cost": "11.28",
              "data_read_per_join": "880"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (97608,97609,97610,97611,97612,97613,97614,97615,97616,97617,97618,97619,97620,97621,97622,97623,97624,97625,97626,97627,97629,97630,97631,97632,97633,97634,97635,97636,97637,97638))"
          }
        },
        {
          "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.75",
              "eval_cost": "0.28",
              "prefix_cost": "30.53",
              "data_read_per_join": "7K"
            },
            "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')))"
          }
        },
        {
          "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": 2,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "0.69",
              "eval_cost": "0.28",
              "prefix_cost": "31.49",
              "data_read_per_join": "44"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
97608 7320,7260M
97609 7349,7261M
97610 7320,7260M
97611 7320,7260M
97612 7320,7260M
97613 7320,7260M
97614 7320,7260M
97615 7320,7260M
97616 7349,7261M
97617 7320,7260M
97618 7320,7260M
97619 7258M
97620 7345,7347,7259M
97621 7258M
97622 7258M
97623 7345,7347,7259M
97624 7258M
97625 7345,7347,7259M
97626 7258M
97627 7258M
97629 7320,7260M
97630 7320,7260M
97631 7320,7260M
97632 7258M
97633 7320,7260M
97634 7349,7261M
97635 7320,7260M
97636 7320,7260M
97637 7320,7260M
97638 7258M