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 = 7240 
WHERE 
  cscart_products_categories.product_id IN (
    98787, 98788, 98789, 98790, 98791, 98792, 
    98793, 98794, 98795, 98796, 98797, 
    98798, 98799, 98800, 98801, 98802, 
    98803, 98804, 98805, 98806, 98807, 
    98808, 98809, 98810, 98811, 98812, 
    98813, 98814, 98874, 98875
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00614

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "108.30"
    },
    "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": 120,
            "rows_produced_per_join": 120,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "12.30",
              "eval_cost": "12.00",
              "prefix_cost": "24.30",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`nuie_scalesta_net`.`cscart_products_categories`.`product_id` in (98787,98788,98789,98790,98791,98792,98793,98794,98795,98796,98797,98798,98799,98800,98801,98802,98803,98804,98805,98806,98807,98808,98809,98810,98811,98812,98813,98814,98874,98875))"
          }
        },
        {
          "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": 120,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "30.00",
              "eval_cost": "12.00",
              "prefix_cost": "66.30",
              "data_read_per_join": "1K"
            },
            "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": [
              "nuie_scalesta_net.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 6,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "30.00",
              "eval_cost": "0.60",
              "prefix_cost": "108.30",
              "data_read_per_join": "15K"
            },
            "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')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids position
98787 7208M,7241,7309,7346
98788 7208M,7241,7309,7346
98789 7208M,7241,7309,7346
98790 7208M,7241,7309,7346
98791 7208M,7241,7309,7346
98792 7208M,7241,7309,7346
98793 7208M,7241,7309,7346
98794 7208M,7241,7309,7346
98795 7208M,7241,7309,7346
98796 7208M,7241,7309,7346
98797 7208M,7241,7309,7346
98798 7208M,7241,7309,7346
98799 7208M,7241,7309,7346
98800 7208M,7241,7309,7346
98801 7208M,7241,7309,7346
98802 7208M,7241,7309,7346
98803 7208M,7241,7309,7346
98804 7208M,7241,7309,7346
98805 7208M,7241,7309,7346
98806 7208M,7241,7309,7346
98807 7208M,7241,7309,7346
98808 7208M,7241,7309,7346
98809 7208M,7241,7309,7346
98810 7208M,7241,7309,7346
98811 7208M,7241,7309,7346
98812 7208M,7241,7309,7346
98813 7208M,7241,7309,7346
98814 7208M,7241,7309,7346
98874 7208M,7241,7309,7346
98875 7208M,7241,7309,7346