sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL GIN-index på array av uuid

Obs! det här svaret är föråldrat eftersom det nu är en del av en standard PostgreSQL, se tbussmanns andra svar (som du bör rösta upp).

Ursprungligt svar:

Detta kan göras med följande operatorklass:

CREATE OPERATOR CLASS _uuid_ops DEFAULT 
  FOR TYPE _uuid USING gin AS 
  OPERATOR 1 &&(anyarray, anyarray), 
  OPERATOR 2 @>(anyarray, anyarray), 
  OPERATOR 3 <@(anyarray, anyarray), 
  OPERATOR 4 =(anyarray, anyarray), 
  FUNCTION 1 uuid_cmp(uuid, uuid), 
  FUNCTION 2 ginarrayextract(anyarray, internal, internal), 
  FUNCTION 3 ginqueryarrayextract(anyarray, internal, smallint, internal, internal, internal, internal), 
  FUNCTION 4 ginarrayconsistent(internal, smallint, anyarray, integer, internal, internal, internal, internal), 
  STORAGE uuid;

Tack till detta för att du pekade mig i rätt riktning.

Den relevanta dokumentationen finns i gränssnittstillägg till index , särskilt operatörsstrategin och funktionsnumren för GIN beskrivs där.



  1. sql group_concat och subquery

  2. PL/SQL:skriv om SELECT-satsen med IN-parametern i den lagrade proceduren

  3. Använder funktionen COALESCE för att göra värden separerade med kommatecken

  4. Mysql-fråga för att dynamiskt konvertera rader till kolumner på basis av två kolumner