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 
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') 
WHERE 
  cscart_products_categories.product_id IN (
    846, 845, 844, 832, 829, 828, 822, 817, 
    816, 662, 814, 806, 805, 804, 803, 802, 
    801, 800, 799, 798, 797, 796, 795, 792
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00121

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "12.69"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "2.83"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 20,
            "rows_produced_per_join": 1,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "2.52",
              "eval_cost": "0.10",
              "prefix_cost": "2.62",
              "data_read_per_join": "2K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`betaatif_store`.`cscart_categories`.`storefront_id` in (0,1)) and ((`betaatif_store`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`betaatif_store`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`betaatif_store`.`cscart_categories`.`usergroup_ids`))) and (`betaatif_store`.`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": [
              "betaatif_store.cscart_categories.category_id"
            ],
            "rows_examined_per_scan": 43,
            "rows_produced_per_join": 2,
            "filtered": "6.58",
            "index_condition": "(`betaatif_store`.`cscart_products_categories`.`product_id` in (846,845,844,832,829,828,822,817,816,662,814,806,805,804,803,802,801,800,799,798,797,796,795,792))",
            "cost_info": {
              "read_cost": "2.94",
              "eval_cost": "0.28",
              "prefix_cost": "9.86",
              "data_read_per_join": "45"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
662 3,15M
792 15M
795 5M
796 15M
797 5M
798 5M
799 15M
800 15M
801 15M
802 15M
803 15M
804 15M
805 15M
806 15M
814 5M
816 17M
817 17M
822 15M
828 18M
829 18M
832 18M
844 19M
845 19M
846 17M