PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Funkcja min(uuid) nie istnieje w postgresql

Chciałbym podziękować odpowiedzi @robin-salih , użyłem jej i implementacji min dla int, aby zbudować następujący 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 (<)
);

Prawie to samo, ale korzysta z zalet indeksu B-drzewa, więc select min(id) from tbl działa w kilku milisekundach.

PS Nie jestem ekspertem od pgsql, być może mój kod jest w jakiś sposób błędny, sprawdź dokładnie przed użyciem w produkcji, ale mam nadzieję, że poprawnie używa indeksów i wykonywania równoległego. Zrobiłem to tylko z przykładowego kodu, nie zagłębiając się w teorię dotyczącą agregatów w PG.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. W jaki sposób pgBouncer pomaga przyspieszyć działanie Django?

  2. Kompilacja rozszerzenia pg_repack na binarnym formacie instalacji PostgreSQL

  3. Jak uzyskać kluczowe pola dla tabeli w funkcji plpgsql?

  4. Eksportuj skrypt CREATE do bazy danych

  5. Czy istnieje limit czasu dla bezczynnych połączeń PostgreSQL?