sql >> Database >  >> RDS >> PostgreSQL

Hoe uuid te gebruiken met het postgresql gist-indextype?

Postgres 10 of nieuwer

btree_gist omvat nu ook het gegevenstype uuid , zoals Paul heeft gereageerd . (En enkele andere gegevenstypen, opmerkelijk allemaal enum typen.)

Nu hoeft u alleen nog maar de extensie één keer per database te installeren:

CREATE EXTENSION btree_gist;

Dan zou je index gewoon moeten werken.

Gerelateerd:

Postgres 9.6 of ouder

(Oorspronkelijk antwoord.)
Normaal gesproken zou ik de aanvullende module btree_gist , maar het type uuid is niet erdoor gedekt.

In theorie, aangezien een UUID a 128-bit quantity is (per documentatie ), zou de meest efficiënte manier zijn om het te converteren naar twee bigint of float8 ten behoeve van de index. Maar geen van deze casts is gedefinieerd in standaard Postgres.

Ik heb een

Om gebruik te kunnen maken van deze functionele index, moeten query's overeenkomen met die expressie. U kunt de afkorting "value"::text . gebruiken in zoekopdrachten (maar niet in de indexdefinitie zonder meer haakjes toe te voegen).

Terzijde:gebruik geen value als kolomnaam is het een gereserveerd woord in standaard SQL .

De vraag is:waarom heb je de GiST-index nodig. De beste oplossing hangt af van het doel.



  1. Hoe WEEKDAY() werkt in MariaDB

  2. Wat betekent 'selecteer' dezelfde tabel als 'van'?

  3. SQL-fout ORA 01427

  4. MySQL-fout - Opdrachten lopen niet synchroon; je kunt deze opdracht nu niet uitvoeren