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 = 7211 
WHERE 
  cscart_products_categories.product_id IN (
    97685, 97686, 97687, 97688, 97689, 97690, 
    97691, 97692, 97693, 97694, 97695, 
    97696, 97697, 97699, 97700, 97701, 
    97702, 97705, 97706, 97707, 97708, 
    97709, 97710, 97711, 97712, 98054, 
    98055, 98056, 98057, 98058
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00169

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "61.02"
    },
    "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": 107,
            "rows_produced_per_join": 107,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "11.00",
              "eval_cost": "10.70",
              "prefix_cost": "21.70",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (97685,97686,97687,97688,97689,97690,97691,97692,97693,97694,97695,97696,97697,97699,97700,97701,97702,97705,97706,97707,97708,97709,97710,97711,97712,98054,98055,98056,98057,98058))"
          }
        },
        {
          "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": 5,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "26.75",
              "eval_cost": "0.54",
              "prefix_cost": "59.15",
              "data_read_per_join": "13K"
            },
            "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": 5,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "1.34",
              "eval_cost": "0.54",
              "prefix_cost": "61.02",
              "data_read_per_join": "85"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
97685 7241,7309,7346,7208M
97686 7241,7309,7346,7208M
97687 7241,7309,7346,7208M
97688 7241,7309,7346,7208M
97689 7241,7309,7346,7208M
97690 7241,7309,7346,7208M
97691 7241,7309,7346,7208M
97692 7241,7309,7346,7208M
97693 7241,7309,7346,7208M
97694 7241,7309,7346,7208M
97695 7241,7309,7346,7208M
97696 7241,7309,7346,7208M
97697 7320,7260M
97699 7320,7260M
97700 7320,7260M
97701 7320,7260M
97702 7320,7260M
97705 7345,7347,7259M
97706 7320,7260M
97707 7241,7309,7346,7208M
97708 7241,7309,7346,7208M
97709 7241,7309,7346,7208M
97710 7241,7309,7346,7208M
97711 7241,7309,7346,7208M
97712 7241,7309,7346,7208M
98054 7241,7309,7346,7208M
98055 7241,7309,7346,7208M
98056 7241,7309,7346,7208M
98057 7241,7309,7346,7208M
98058 7241,7309,7346,7208M