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 (
    1815, 1853, 1759, 2001, 2276, 2231, 2281, 
    2379, 2388, 2115, 1929, 2373, 2372, 
    2374, 1760, 1807, 1847, 2363, 1816, 
    2146
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00035

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "22.61"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 22,
            "rows_produced_per_join": 22,
            "filtered": "100.00",
            "index_condition": "(`cscartdevel`.`cscart_products_categories`.`product_id` in (1815,1853,1759,2001,2276,2231,2281,2379,2388,2115,1929,2373,2372,2374,1760,1807,1847,2363,1816,2146))",
            "cost_info": {
              "read_cost": "12.71",
              "eval_cost": "2.20",
              "prefix_cost": "14.91",
              "data_read_per_join": "352"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        },
        {
          "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": [
              "cscartdevel.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 1,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "5.50",
              "eval_cost": "0.11",
              "prefix_cost": "22.61",
              "data_read_per_join": "3K"
            },
            "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')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
1759 388M
1760 303M
1807 303M
1815 388M
1816 303M
1847 303M
1853 388M
1929 299M
2001 388M
2115 299M
2146 313M
2231 313M
2276 401M
2281 389M
2363 303M
2372 362M
2373 362M
2374 362M
2379 389M
2388 299M