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 = 7184 
WHERE 
  cscart_products_categories.product_id IN (
    96626, 96627, 96628, 96629, 96668, 96669, 
    96670, 96671, 96672, 96673, 96674, 
    96675, 96676, 96678, 96680, 96681, 
    96682, 96683, 96686, 96687, 96688, 
    96689, 96690, 96691
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00126

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "41.71"
    },
    "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": 73,
            "rows_produced_per_join": 73,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "7.59",
              "eval_cost": "7.30",
              "prefix_cost": "14.89",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (96626,96627,96628,96629,96668,96669,96670,96671,96672,96673,96674,96675,96676,96678,96680,96681,96682,96683,96686,96687,96688,96689,96690,96691))"
          }
        },
        {
          "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.25",
              "eval_cost": "0.37",
              "prefix_cost": "40.44",
              "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.91",
              "eval_cost": "0.37",
              "prefix_cost": "41.71",
              "data_read_per_join": "58"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "position"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
96626 7313,7338,7219M
96627 7313,7338,7219M
96628 7313,7338,7219M
96629 7313,7338,7219M
96668 7313,7338,7219M
96669 7313,7338,7219M
96670 7313,7338,7219M
96671 7313,7338,7219M
96672 7313,7338,7219M
96673 7313,7338,7219M
96674 7313,7338,7219M
96675 7313,7338,7219M
96676 7313,7338,7219M
96678 7341,7342,7343,7157M
96680 7313,7338,7219M
96681 7313,7338,7219M
96682 7313,7338,7219M
96683 7313,7338,7219M
96686 7313,7338,7219M
96687 7313,7338,7219M
96688 7313,7338,7219M
96689 7313,7338,7219M
96690 7313,7338,7219M
96691 7313,7338,7219M