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 (
    87155, 87156, 87157, 87158, 87159, 87287, 
    92169, 92170, 92390, 92391, 92392, 
    92393, 92394, 92416, 91945, 91946, 
    91947, 91948, 91949, 91950, 91951, 
    87142, 87143, 87144
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00132

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "42.28"
    },
    "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": 74,
            "rows_produced_per_join": 74,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "7.69",
              "eval_cost": "7.40",
              "prefix_cost": "15.09",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (87155,87156,87157,87158,87159,87287,92169,92170,92390,92391,92392,92393,92394,92416,91945,91946,91947,91948,91949,91950,91951,87142,87143,87144))"
          }
        },
        {
          "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": "18.50",
              "eval_cost": "0.37",
              "prefix_cost": "40.99",
              "data_read_per_join": "9K"
            },
            "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": 3,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "0.93",
              "eval_cost": "0.37",
              "prefix_cost": "42.28",
              "data_read_per_join": "59"
            },
            "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
87155 7241,7309,7346,7208M
87156 7241,7309,7346,7208M
87157 7241,7309,7346,7208M
87158 7241,7309,7346,7208M
87159 7241,7309,7346,7208M
87287 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