Powinieneś poeksperymentować z wyższymi ustawieniami work_mem
dopóki nie uzyskasz sortowania w pamięci. Oczywiście możesz być hojny tylko wtedy, gdy twoja maszyna ma jej wystarczająco dużo.
To, co przyspieszyłoby zapytanie, to przechowywanie wstępnie zagregowanych danych za pomocą widoku zmaterializowanego lub drugiej tabeli i wyzwalacza w oryginalnej tabeli, który aktualizuje sumy w drugiej tabeli. Nie wiem, czy jest to możliwe w przypadku twoich danych, ponieważ nie wiem, co hll_cardinality
i hll_union_agg
są.