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 = 7148 
WHERE 
  cscart_products_categories.product_id IN (
    92169, 92170, 92390, 92391, 92392, 92393, 
    92394, 92416, 91945, 91946, 91947, 
    91948, 91949, 91950, 91951, 87142, 
    87143, 87144, 87145, 87146, 87147, 
    87285, 87172, 87173, 87174, 87175, 
    87176, 87177, 87160, 87161
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00171

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "55.91"
    },
    "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": 98,
            "rows_produced_per_join": 98,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "10.10",
              "eval_cost": "9.80",
              "prefix_cost": "19.90",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (92169,92170,92390,92391,92392,92393,92394,92416,91945,91946,91947,91948,91949,91950,91951,87142,87143,87144,87145,87146,87147,87285,87172,87173,87174,87175,87176,87177,87160,87161))"
          }
        },
        {
          "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": 4,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "24.50",
              "eval_cost": "0.49",
              "prefix_cost": "54.20",
              "data_read_per_join": "12K"
            },
            "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": 4,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "1.23",
              "eval_cost": "0.49",
              "prefix_cost": "55.91",
              "data_read_per_join": "78"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
87142 7241,7309,7346,7208M
87143 7241,7309,7346,7208M
87144 7241,7309,7346,7208M
87145 7241,7309,7346,7208M
87146 7241,7309,7346,7208M
87147 7241,7309,7346,7208M
87160 7241,7309,7346,7208M
87161 7241,7309,7346,7208M
87172 7241,7309,7346,7208M
87173 7241,7309,7346,7208M
87174 7241,7309,7346,7208M
87175 7241,7309,7346,7208M
87176 7241,7309,7346,7208M
87177 7241,7309,7346,7208M
87285 7241,7309,7346,7208M
91945 7305,7160M
91946 7305,7160M
91947 7305,7160M
91948 7305,7160M
91949 7305,7160M
91950 7305,7160M
91951 7305,7160M
92169 7156,7157,7148M 0
92170 7156,7157,7148M 0
92390 7156,7157,7148M 0
92391 7156,7157,7148M 0
92392 7156,7157,7148M 0
92393 7156,7157,7148M 0
92394 7156,7157,7148M 0
92416 7158,7159,7148M 0