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 = 317 
WHERE 
  cscart_products_categories.product_id IN (
    1447, 1426, 1437, 1460, 1464, 1421, 1462, 
    1409, 1416, 1472, 1452, 1425, 1438, 
    1424, 1413, 1450, 1469, 1455, 1443, 
    1418, 1634, 1664, 1641, 1671, 1627, 
    1657, 1655, 1686, 1646, 1677, 1636, 
    1666, 1638, 1668, 1644, 1674, 1642, 
    1672, 2185, 1629
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00125

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "24.60"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "1.09"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 68,
            "rows_produced_per_join": 2,
            "filtered": "4.00",
            "cost_info": {
              "read_cost": "7.63",
              "eval_cost": "0.27",
              "prefix_cost": "7.91",
              "data_read_per_join": "9K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`cscartdevel`.`cscart_categories`.`storefront_id` in (0,1)) and ((`cscartdevel`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`cscartdevel`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`cscartdevel`.`cscart_categories`.`usergroup_ids`))) and (`cscartdevel`.`cscart_categories`.`status` in ('A','H')))"
          }
        },
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "cscartdevel.cscart_categories.category_id"
            ],
            "rows_examined_per_scan": 16,
            "rows_produced_per_join": 1,
            "filtered": "2.50",
            "index_condition": "(`cscartdevel`.`cscart_products_categories`.`product_id` in (1447,1426,1437,1460,1464,1421,1462,1409,1416,1472,1452,1425,1438,1424,1413,1450,1469,1455,1443,1418,1634,1664,1641,1671,1627,1657,1655,1686,1646,1677,1636,1666,1638,1668,1644,1674,1642,1672,2185,1629))",
            "cost_info": {
              "read_cost": "10.88",
              "eval_cost": "0.11",
              "prefix_cost": "23.14",
              "data_read_per_join": "17"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        },
        {
          "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",
              "cscartdevel.cscart_products_categories.product_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 1,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "0.27",
              "eval_cost": "0.11",
              "prefix_cost": "23.52",
              "data_read_per_join": "17"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
1409 359M
1413 359M
1416 359M
1418 359M
1421 359M
1424 359M
1425 359M
1426 359M
1437 359M
1438 359M
1443 359M
1447 359M
1450 359M
1452 359M
1455 359M
1460 359M
1462 359M
1464 359M
1469 359M
1472 359M
1627 359M
1629 359M
1634 359M
1636 359M
1638 359M
1641 359M
1642 359M
1644 359M
1646 359M
1655 359M
1657 359M
1664 359M
1666 359M
1668 359M
1671 359M
1672 359M
1674 359M
1677 359M
1686 359M
2185 359M