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 = 10051 
WHERE 
  cscart_products_categories.product_id IN (
    282971, 286602, 283081, 283125, 286561, 
    282507, 283098, 279396, 286611, 282889, 
    282945, 286621, 277944, 286500, 286533, 
    284472, 286574, 279355, 278025, 278209, 
    285797, 279438, 270384, 281368, 270320, 
    286493, 277872, 286557, 278250, 278190, 
    285798, 285799, 285796, 285794, 286704, 
    281369
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00167

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "101.86"
    },
    "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": 36,
            "rows_produced_per_join": 36,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "8.26",
              "eval_cost": "7.20",
              "prefix_cost": "15.46",
              "data_read_per_join": "576"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`webmarco`.`cscart_products_categories`.`product_id` in (282971,286602,283081,283125,286561,282507,283098,279396,286611,282889,282945,286621,277944,286500,286533,284472,286574,279355,278025,278209,285797,279438,270384,281368,270320,286493,277872,286557,278250,278190,285798,285799,285796,285794,286704,281369))"
          }
        },
        {
          "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",
              "webmarco.cscart_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 36,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "36.00",
              "eval_cost": "7.20",
              "prefix_cost": "58.66",
              "data_read_per_join": "576"
            },
            "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": [
              "webmarco.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 1,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "36.00",
              "eval_cost": "0.36",
              "prefix_cost": "101.86",
              "data_read_per_join": "10K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`webmarco`.`cscart_categories`.`storefront_id` in (0,1)) and ((`webmarco`.`cscart_categories`.`usergroup_ids` = '') or find_in_set(0,`webmarco`.`cscart_categories`.`usergroup_ids`) or find_in_set(1,`webmarco`.`cscart_categories`.`usergroup_ids`)) and (`webmarco`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
270320 10070M
270384 10061M
277872 10057M
277944 10057M
278025 10057M
278190 10057M
278209 10057M
278250 10057M
279355 10057M
279396 10057M
279438 10057M
281368 10051M 0
281369 10051M 0
282507 10057M
282889 10051M 0
282945 10051M 0
282971 10051M 0
283081 10051M 0
283098 10051M 0
283125 10051M 0
284472 10057M
285794 10057M
285796 10057M
285797 10057M
285798 10057M
285799 10057M
286493 10065M
286500 10057M
286533 10057M
286557 10057M
286561 10057M
286574 10057M
286602 10057M
286611 10057M
286621 10057M
286704 10051M 0