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

Query time 0.00058

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "134.53"
    },
    "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": "2K"
          },
          "used_columns": [
            "category_id",
            "id_path"
          ]
        }
      },
      {
        "table": {
          "table_name": "a",
          "access_type": "ALL",
          "rows_examined_per_scan": 598,
          "rows_produced_per_join": 66,
          "filtered": "11.11",
          "cost_info": {
            "read_cost": "14.93",
            "eval_cost": "13.29",
            "prefix_cost": "134.53",
            "data_read_per_join": "175K"
          },
          "used_columns": [
            "category_id",
            "id_path"
          ],
          "attached_condition": "(`portal`.`a`.`id_path` like <cache>(concat('12','/%')))"
        }
      }
    ]
  }
}

Result

category_id
13
14
29
40
45
51
52
69
78
85
93
96
293
564
608
15
30
41
46
50
53
68
70
79
92
97
294
609
16
31
38
42
47
54
71
77
80
87
91
94
98
295
17
32
43
44
48
55
72
81
84
88
95
99
296
597
605
18
33
49
56
73
82
83
89
297
555
607
19
34
57
74
90
298
582
600
20
35
58
75
205
604
21
37
59
76
601
22
60
23
66
24
613
25
26
27
28
36