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 = 7340 
WHERE 
  cscart_products_categories.product_id IN (
    97875, 97876, 97877, 97878, 97879, 97880, 
    97881, 97882, 97886, 97888, 98001, 
    98176, 98177, 98178, 98179, 98180, 
    98181, 98182, 98183, 98184, 98185, 
    98186, 98187, 98188, 98189, 98190, 
    98191, 98200, 98201, 98202
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.01515

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "108.30"
    },
    "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": 120,
            "rows_produced_per_join": 120,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "12.30",
              "eval_cost": "12.00",
              "prefix_cost": "24.30",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (97875,97876,97877,97878,97879,97880,97881,97882,97886,97888,98001,98176,98177,98178,98179,98180,98181,98182,98183,98184,98185,98186,98187,98188,98189,98190,98191,98200,98201,98202))"
          }
        },
        {
          "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": 120,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "30.00",
              "eval_cost": "12.00",
              "prefix_cost": "66.30",
              "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": 6,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "30.00",
              "eval_cost": "0.60",
              "prefix_cost": "108.30",
              "data_read_per_join": "15K"
            },
            "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
97875 7157M,7341,7342,7343
97876 7157M,7341,7342,7343
97877 7157M,7341,7342,7343
97878 7157M,7341,7342,7343
97879 7157M,7341,7342,7343
97880 7157M,7341,7342,7343
97881 7157M,7341,7342,7343
97882 7157M,7341,7342,7343
97886 7157M,7341,7342,7343
97888 7157M,7341,7342,7343
98001 7157M,7341,7342,7343
98176 7157M,7341,7342,7343
98177 7157M,7341,7342,7343
98178 7157M,7341,7342,7343
98179 7157M,7341,7342,7343
98180 7157M,7341,7342,7343
98181 7157M,7341,7342,7343
98182 7157M,7341,7342,7343
98183 7157M,7341,7342,7343
98184 7157M,7341,7342,7343
98185 7157M,7341,7342,7343
98186 7157M,7341,7342,7343
98187 7157M,7341,7342,7343
98188 7157M,7341,7342,7343
98189 7157M,7341,7342,7343
98190 7157M,7341,7342,7343
98191 7157M,7341,7342,7343
98200 7157M,7341,7342,7343
98201 7157M,7341,7342,7343
98202 7157M,7341,7342,7343