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 = 7170 
WHERE 
  cscart_products_categories.product_id IN (
    99315, 99316, 99317, 99318, 99330, 99331, 
    99332, 99347, 99349, 99351, 99353, 
    99355, 99413, 99414, 99415, 99416, 
    99417, 99418, 99419, 99420, 99421, 
    99441, 99442, 99448, 99449, 99450, 
    99451, 99459, 99460, 99461, 99462, 
    99464, 99465, 99470, 99471, 99472, 
    99473, 99478, 99479, 99480, 99481, 
    99487, 99488, 99489, 99490, 99558, 
    99559, 99560
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00139

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 (99315,99316,99317,99318,99330,99331,99332,99347,99349,99351,99353,99355,99413,99414,99415,99416,99417,99418,99419,99420,99421,99441,99442,99448,99449,99450,99451,99459,99460,99461,99462,99464,99465,99470,99471,99472,99473,99478,99479,99480,99481,99487,99488,99489,99490,99558,99559,99560))"
          }
        },
        {
          "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
99315 7201M
99316 7201M
99317 7201M
99318 7201M
99330 7201M
99331 7201M
99332 7201M
99347 7201M
99349 7201M
99351 7201M
99353 7201M
99355 7201M
99413 7201M
99414 7201M
99415 7201M
99416 7201M
99417 7201M
99418 7201M
99419 7201M
99420 7201M
99421 7201M
99441 7201M
99442 7201M
99448 7201M
99449 7201M
99450 7201M
99451 7201M
99459 7201M
99460 7201M
99461 7201M
99462 7201M
99464 7201M
99465 7201M
99470 7201M
99471 7201M
99472 7201M
99473 7201M
99478 7201M
99479 7201M
99480 7201M
99481 7201M
99487 7201M
99488 7201M
99489 7201M
99490 7201M
99558 7201M
99559 7201M
99560 7201M