sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur använder man uuid med postgresql gist index typ?

Postgres 10 eller senare

btree_gist täcker nu även datatypen uuid , som Paul kommenterade . (Och några andra datatyper, anmärkningsvärt nog alla enum typer.)

Nu behöver du bara göra:installera tillägget en gång per databas:

CREATE EXTENSION btree_gist;

Då borde ditt index bara fungera.

Relaterat:

Postgres 9.6 eller äldre

(Originalt svar.)
Vanligtvis skulle jag föreslå tilläggsmodulen btree_gist , men typen uuid är inte omfattas av det.

I teorin, eftersom ett UUID är a 128-bit quantity (per dokumentation ), skulle det mest effektiva sättet vara att konvertera den till två bigint eller float8 för indexets syfte. Men ingen av dessa casts är definierade i standard Postgres.

Jag hittade en

För att kunna använda detta funktionsindex måste frågor matcha det uttrycket. Du kan använda förkortningen "value"::text i frågor (men inte i indexdefinitionen utan att lägga till fler parenteser).

Bortsett från:använd inte value som kolumnnamn är det ett reserverat ord i standard SQL .

Frågan är:varför behöver du GiST-indexet. Den bästa lösningen beror på målet.



  1. Hur man jämför datum i SQL Server

  2. Skriva till specifika scheman med RPostgreSQL

  3. Kan jag gå igenom en tabellvariabel i T-SQL?

  4. SQL Server pivot kontra multipel koppling