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 (
    97070, 97071, 97072, 97073, 97074, 97075, 
    97076, 97077, 97078, 97079, 97080, 
    97081, 97082, 97084, 97085, 97086, 
    97087, 97088, 97089, 97090, 97091, 
    97092, 97093, 97094, 97095, 97096, 
    97097, 97098, 97099, 97100, 97101, 
    97102, 97103, 97104, 97105, 97106, 
    97107, 97108, 97109, 97110, 97111, 
    97112, 97113, 97114, 97115, 97116, 
    97117, 97118
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00145

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "43.48"
    },
    "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": 48,
            "rows_produced_per_join": 48,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "5.08",
              "eval_cost": "4.80",
              "prefix_cost": "9.88",
              "data_read_per_join": "768"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (97070,97071,97072,97073,97074,97075,97076,97077,97078,97079,97080,97081,97082,97084,97085,97086,97087,97088,97089,97090,97091,97092,97093,97094,97095,97096,97097,97098,97099,97100,97101,97102,97103,97104,97105,97106,97107,97108,97109,97110,97111,97112,97113,97114,97115,97116,97117,97118))"
          }
        },
        {
          "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": 48,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "12.00",
              "eval_cost": "4.80",
              "prefix_cost": "26.68",
              "data_read_per_join": "768"
            },
            "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": 2,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "12.00",
              "eval_cost": "0.24",
              "prefix_cost": "43.48",
              "data_read_per_join": "6K"
            },
            "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
97070 7254M
97071 7254M
97072 7254M
97073 7254M
97074 7254M
97075 7254M
97076 7254M
97077 7254M
97078 7254M
97079 7254M
97080 7254M
97081 7254M
97082 7254M
97084 7254M
97085 7254M
97086 7254M
97087 7254M
97088 7254M
97089 7254M
97090 7254M
97091 7254M
97092 7254M
97093 7254M
97094 7254M
97095 7254M
97096 7254M
97097 7254M
97098 7254M
97099 7254M
97100 7254M
97101 7254M
97102 7254M
97103 7254M
97104 7254M
97105 7254M
97106 7254M
97107 7254M
97108 7254M
97109 7254M
97110 7254M
97111 7254M
97112 7254M
97113 7254M
97114 7254M
97115 7254M
97116 7254M
97117 7254M
97118 7254M