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 = 7229 
WHERE 
  cscart_products_categories.product_id IN (
    96369, 96370, 96371, 96372, 96373, 96374, 
    96375, 96376, 96377, 96378, 96379, 
    96380, 96381, 96382, 96392, 96393, 
    96401, 96402, 96403, 96404, 96405, 
    96406, 96407, 96408, 96411, 96412, 
    96413, 96414, 96415, 96416, 96417, 
    96418, 96419, 96420, 96421, 96422, 
    96423, 96424, 96425, 96426, 96427, 
    96428, 96430, 96431, 96434, 96435, 
    96436, 96437
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00123

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "27.52"
    },
    "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 (96369,96370,96371,96372,96373,96374,96375,96376,96377,96378,96379,96380,96381,96382,96392,96393,96401,96402,96403,96404,96405,96406,96407,96408,96411,96412,96413,96414,96415,96416,96417,96418,96419,96420,96421,96422,96423,96424,96425,96426,96427,96428,96430,96431,96434,96435,96436,96437))"
          }
        },
        {
          "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": "26.68",
              "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')))"
          }
        },
        {
          "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.60",
              "eval_cost": "0.24",
              "prefix_cost": "27.52",
              "data_read_per_join": "38"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
96369 7229M 0
96370 7229M 0
96371 7229M 0
96372 7229M 0
96373 7229M 0
96374 7229M 0
96375 7229M 0
96376 7229M 0
96377 7229M 0
96378 7229M 0
96379 7229M 0
96380 7229M 0
96381 7229M 0
96382 7229M 0
96392 7229M 0
96393 7229M 0
96401 7229M 0
96402 7229M 0
96403 7229M 0
96404 7229M 0
96405 7229M 0
96406 7229M 0
96407 7229M 0
96408 7229M 0
96411 7229M 0
96412 7229M 0
96413 7229M 0
96414 7229M 0
96415 7229M 0
96416 7229M 0
96417 7229M 0
96418 7229M 0
96419 7229M 0
96420 7229M 0
96421 7229M 0
96422 7229M 0
96423 7229M 0
96424 7229M 0
96425 7229M 0
96426 7229M 0
96427 7229M 0
96428 7229M 0
96430 7229M 0
96431 7229M 0
96434 7229M 0
96435 7229M 0
96436 7229M 0
96437 7229M 0