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 (
    97994, 97995, 97996, 97997, 97998, 97999, 
    98000, 98024, 98025, 98026, 98027, 
    98028, 98029, 98457, 98458, 98459, 
    98460, 98461, 98462, 98463, 98464, 
    98465, 98466, 98467, 98468, 98469, 
    98470, 98471, 98472, 98473, 98474, 
    98475, 98496, 98497, 98498, 98499, 
    98500, 98501, 98515, 98521, 98522, 
    99026, 99027, 99028, 99029, 99030, 
    99031, 99032
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00108

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "58.78"
    },
    "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": 65,
            "rows_produced_per_join": 65,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "6.78",
              "eval_cost": "6.50",
              "prefix_cost": "13.28",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (97994,97995,97996,97997,97998,97999,98000,98024,98025,98026,98027,98028,98029,98457,98458,98459,98460,98461,98462,98463,98464,98465,98466,98467,98468,98469,98470,98471,98472,98473,98474,98475,98496,98497,98498,98499,98500,98501,98515,98521,98522,99026,99027,99028,99029,99030,99031,99032))"
          }
        },
        {
          "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": 65,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "16.25",
              "eval_cost": "6.50",
              "prefix_cost": "36.03",
              "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.25",
              "eval_cost": "0.33",
              "prefix_cost": "58.78",
              "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
97994 7331,7253M
97995 7331,7253M
97996 7331,7253M
97997 7331,7253M
97998 7331,7253M
97999 7331,7253M
98000 7331,7253M
98024 7222M
98025 7222M
98026 7222M
98027 7222M
98028 7222M
98029 7222M
98457 7254M
98458 7254M
98459 7254M
98460 7254M
98461 7254M
98462 7254M
98463 7254M
98464 7254M
98465 7254M
98466 7254M
98467 7254M
98468 7254M
98469 7254M
98470 7254M
98471 7254M
98472 7254M
98473 7254M
98474 7254M
98475 7254M
98496 7331,7253M
98497 7331,7253M
98498 7331,7253M
98499 7331,7253M
98500 7331,7253M
98501 7331,7253M
98515 7222M
98521 7222M
98522 7222M
99026 7252M
99027 7252M
99028 7252M
99029 7331,7253M
99030 7331,7253M
99031 7330,7285M
99032 7331,7253M