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 = 7156 
WHERE 
  cscart_products_categories.product_id IN (
    87242, 87243, 87247, 87248, 92450, 92451, 
    92452, 92453, 92454, 92455, 92456, 
    91838, 91837, 92500, 85039, 84251, 
    84256, 87580, 87595, 87610, 88791, 
    87370, 89609, 89610
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00162

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "59.68"
    },
    "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": 66,
            "rows_produced_per_join": 66,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "6.88",
              "eval_cost": "6.60",
              "prefix_cost": "13.48",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (87242,87243,87247,87248,92450,92451,92452,92453,92454,92455,92456,91838,91837,92500,85039,84251,84256,87580,87595,87610,88791,87370,89609,89610))"
          }
        },
        {
          "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": 66,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "16.50",
              "eval_cost": "6.60",
              "prefix_cost": "36.58",
              "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": 3,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "16.50",
              "eval_cost": "0.33",
              "prefix_cost": "59.68",
              "data_read_per_join": "8K"
            },
            "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
84251 7194M
84256 7194M
85039 7341,7342,7343,7157M
87242 7194M
87243 7194M
87247 7194M
87248 7194M
87370 7341,7342,7343,7157M
87580 7194M
87595 7194M
87610 7194M
88791 7194M
89609 7341,7342,7343,7157M
89610 7341,7342,7343,7157M
91837 7341,7342,7343,7157M
91838 7341,7342,7343,7157M
92450 7341,7342,7343,7157M
92451 7341,7342,7343,7157M
92452 7341,7342,7343,7157M
92453 7341,7342,7343,7157M
92454 7341,7342,7343,7157M
92455 7341,7342,7343,7157M
92456 7341,7342,7343,7157M
92500 7341,7342,7343,7157M