Wygląda na to, że indeksy Gin zachowują się dobrze. Jeśli utworzę indeks Gin w kolumnie indeksów, a następnie zmienię Join na
ON t.indexes @> jsonb_build_object('Id', c.indexes -> 'parentId')
I gdzie
WHERE t.indexes @> jsonb_build_object('Id', h.pid)
Nie jest tak szybki jak sam indeks funkcji, ale przynajmniej będzie aktualizowany dynamicznie, a plan wykonania nie ma tego niepotrzebnego sortowania
Dalsze ulepszenia wydajności można wprowadzić, dodając flagę indeksu gin jsonb_path_ops