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 = 7244 
WHERE 
  cscart_products_categories.product_id IN (
    87451, 87452, 88558, 88571, 88608, 88665, 
    88666, 88667, 88712, 88713, 88714, 
    88751, 88760, 88761, 91461, 87264, 
    87262, 87265, 87276, 87275, 87274, 
    87269, 88526, 88759, 87187, 87204, 
    87221, 87229, 84767, 84780
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00146

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "33.57"
    },
    "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": 37,
            "rows_produced_per_join": 37,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "3.97",
              "eval_cost": "3.70",
              "prefix_cost": "7.67",
              "data_read_per_join": "592"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (87451,87452,88558,88571,88608,88665,88666,88667,88712,88713,88714,88751,88760,88761,91461,87264,87262,87265,87276,87275,87274,87269,88526,88759,87187,87204,87221,87229,84767,84780))"
          }
        },
        {
          "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": 37,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "9.25",
              "eval_cost": "3.70",
              "prefix_cost": "20.62",
              "data_read_per_join": "592"
            },
            "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": 1,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "9.25",
              "eval_cost": "0.19",
              "prefix_cost": "33.57",
              "data_read_per_join": "4K"
            },
            "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
84767 7245M
84780 7245M
87187 7245M
87204 7245M
87221 7245M
87229 7245M
87262 7244,7246M 0
87264 7244,7246M 0
87265 7244,7246M 0
87269 7244,7246M 0
87274 7244,7246M 0
87275 7244,7246M 0
87276 7244,7246M 0
87451 7245M
87452 7245M
88526 7245M
88558 7245M
88571 7245M
88608 7245M
88665 7245M
88666 7245M
88667 7245M
88712 7245M
88713 7245M
88714 7245M
88751 7245M
88759 7245M
88760 7245M
88761 7245M
91461 7245M