Eu gostaria de creditar a resposta de @robin-salih, eu usei isso e implementação de min para int, para construir o seguinte código:
CREATE OR REPLACE FUNCTION min(uuid, uuid)
RETURNS uuid AS $$
BEGIN
IF $2 IS NULL OR $1 > $2 THEN
RETURN $2;
END IF;
RETURN $1;
END;
$$ LANGUAGE plpgsql;
create aggregate min(uuid) (
sfunc = min,
stype = uuid,
combinefunc = min,
parallel = safe,
sortop = operator (<)
);
É quase o mesmo, mas tira vantagens do índice B-tree, então
select min(id) from tbl
funciona em alguns milis. P.S. Não sou especialista em pgsql, talvez meu código esteja de alguma forma errado, verifique antes de usar em produção, mas espero que use índices e execução paralela corretamente. Eu fiz isso apenas a partir do código de amostra, não me aprofundando na teoria por trás dos agregados no PG.