sql >> Database teknologi >  >> RDS >> PostgreSQL

Funktion min(uuid) findes ikke i postgresql

Jeg vil gerne kreditere @robin-salihs svar, jeg har brugt det og implementering af min for int, til at bygge følgende kode:

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 er næsten det samme, men udnytter fordelene ved B-træindeks, så select min(id) from tbl virker på få millis.

P.S. Jeg er ikke pgsql-ekspert, måske er min kode på en eller anden måde forkert, dobbelttjek før brug i produktionen, men jeg håber, den bruger indekser og parallel udførelse korrekt. Jeg har kun lavet det ud fra eksempelkode, ikke gravet i teorien bag aggregater i PG.



  1. Beregn tidsforskellen mellem to rækker

  2. ved at bruge mysql regex_replace med et regulært udtryk

  3. Architecting for Security:En guide til MySQL

  4. MySQL Stored Procedure Permissions