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

Hvordan bruger man uuid med postgresql gist indekstype?

Postgres 10 eller nyere

btree_gist dækker nu også datatypen uuid , ligesom Paul kommenterede . (Og nogle andre datatyper, bemærkelsesværdigt alle enum typer.)

Nu skal du bare gøre:Installer udvidelsen én gang pr. database:

CREATE EXTENSION btree_gist;

Så skulle dit indeks bare virke.

Relateret:

Postgres 9.6 eller ældre

(Originalt svar.)
Normalt vil jeg foreslå det ekstra modul btree_gist , men typen uuid er ikke dækket af det.

I teorien, da en UUID er a 128-bit quantity (pr. dokumentation ), ville den mest effektive måde være at konvertere den til to bigint eller float8 med henblik på indekset. Men ingen af ​​disse afstøbninger er defineret i standard Postgres.

Jeg har fundet en

For at gøre brug af dette funktionelle indeks skal forespørgsler matche dette udtryk. Du kan bruge forkortelsen "value"::text i forespørgsler (men ikke i indeksdefinitionen uden at tilføje flere parenteser).

Til side:Brug ikke value som kolonnenavn er det et reserveret ord i standard SQL .

Spørgsmålet er:hvorfor har du brug for GiST-indekset. Den bedste løsning afhænger af målet.



  1. Hvorfor ændres ora_rowscn uden at opdatere en tabel

  2. Brug Firebase DB med lokal DB

  3. Tekstfilstruktur (tabeller)

  4. Bruger MySQL indekser på Having?