sql >> Database >  >> RDS >> PostgreSQL

Functie min(uuid) bestaat niet in postgresql

Ik zou graag het antwoord van @robin-salih willen erkennen, ik heb het en de implementatie van min voor int gebruikt om de volgende code te bouwen:

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 (<)
);

Het is bijna hetzelfde, maar profiteert van de B-tree-index, dus select min(id) from tbl werkt in een paar milliliter.

P.S. Ik ben geen pgsql-expert, misschien is mijn code op de een of andere manier verkeerd, controleer het voor gebruik in productie, maar ik hoop dat het indexen en parallelle uitvoering correct gebruikt. Ik heb het alleen gemaakt van voorbeeldcode, niet in de theorie achter aggregaten in PG.



  1. Selecteer Meerdere ID's uit een tabel

  2. Welk hiërarchisch model moet ik gebruiken? Aangrenzend, genest of opgesomd?

  3. Een driewegrelatie modelleren in een JPA Spring Boot-microservice met een MySQL-backend

  4. Een overzicht van cluster-naar-clusterreplicatie