Jag skulle vilja kreditera @robin-salihs svar, jag har använt det och implementering av min för int, för att bygga följande kod:
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 (<)
);
Det är nästan samma, men drar fördelar av B-tree index, så select min(id) from tbl
fungerar på några millis.
P.S. Jag är ingen pgsql-expert, kanske är min kod fel på något sätt, dubbelkolla innan användning i produktion, men jag hoppas att den använder index och parallellkörning korrekt. Jag har gjort det bara från exempelkod, utan att gräva i teorin bakom aggregat i PG.