SELECT 
  a.category_id 
FROM 
  jmj_categories as a 
  LEFT JOIN jmj_categories as b ON b.category_id IN (2) 
WHERE 
  a.id_path LIKE CONCAT(b.id_path, '/%')

Query time 0.00128

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "29.42"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "b",
          "access_type": "const",
          "possible_keys": [
            "PRIMARY",
            "p_category_id"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "category_id"
          ],
          "key_length": "3",
          "ref": [
            "const"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.00",
            "eval_cost": "0.20",
            "prefix_cost": "0.00",
            "data_read_per_join": "3K"
          },
          "used_columns": [
            "category_id",
            "id_path"
          ]
        }
      },
      {
        "table": {
          "table_name": "a",
          "access_type": "ALL",
          "rows_examined_per_scan": 120,
          "rows_produced_per_join": 13,
          "filtered": "11.11",
          "cost_info": {
            "read_cost": "5.42",
            "eval_cost": "2.67",
            "prefix_cost": "29.42",
            "data_read_per_join": "51K"
          },
          "used_columns": [
            "category_id",
            "id_path"
          ],
          "attached_condition": "(`jmj_test`.`a`.`id_path` like <cache>(concat('2','/%')))"
        }
      }
    ]
  }
}

Result

category_id
31
36
47
60
32
45
48
61
33
46
49
62
34
51
63
87
35
50
64
37
52
65
38
53
66
39
54
41
57
40
59
43
55
42
56
44
58