Бих искал да призная отговора на @robin-salih, използвах го и внедряването на min за int, за да създам следния код:
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 (<)
);
Почти същото, но се възползва от предимствата на индекса на B-дърво, така че select min(id) from tbl
работи за няколко милилита.
P.S. Не съм експерт по pgsql, може би кодът ми някак си е грешен, проверете отново преди употреба в производството, но се надявам, че използва индекси и паралелно изпълнение правилно. Направих го само от примерен код, без да се задълбочавам в теорията зад агрегатите в PG.