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 (
    99059, 99060, 99061, 99062, 99063, 99064, 
    99065, 99066, 99067, 99133, 99141, 
    99142, 99151, 99152, 99169, 99170, 
    99248, 99257, 99262, 99322, 99323, 
    99324, 99325, 99326, 99327, 99328, 
    99329, 99333, 99334, 99335
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00265

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "42.85"
    },
    "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": 75,
            "rows_produced_per_join": 75,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "7.79",
              "eval_cost": "7.50",
              "prefix_cost": "15.29",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (99059,99060,99061,99062,99063,99064,99065,99066,99067,99133,99141,99142,99151,99152,99169,99170,99248,99257,99262,99322,99323,99324,99325,99326,99327,99328,99329,99333,99334,99335))"
          }
        },
        {
          "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.75",
              "eval_cost": "0.38",
              "prefix_cost": "41.54",
              "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.94",
              "eval_cost": "0.38",
              "prefix_cost": "42.85",
              "data_read_per_join": "60"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
99059 7241,7309,7346,7208M
99060 7241,7309,7346,7208M
99061 7241,7309,7346,7208M
99062 7241,7309,7346,7208M
99063 7241,7309,7346,7208M
99064 7241,7309,7346,7208M
99065 7241,7309,7346,7208M
99066 7341,7342,7343,7157M
99067 7241,7309,7346,7208M
99133 7263M
99141 7263M
99142 7263M
99151 7263M
99152 7263M
99169 7263M
99170 7263M
99248 7263M
99257 7263M
99262 7263M
99322 7263M
99323 7263M
99324 7241,7309,7346,7208M
99325 7241,7309,7346,7208M
99326 7241,7309,7346,7208M
99327 7241,7309,7346,7208M
99328 7241,7309,7346,7208M
99329 7241,7309,7346,7208M
99333 7194M
99334 7194M
99335 7194M