sql >> Databáze >  >> RDS >> PostgreSQL

Jak používat uuid s typem indexu gist postgresql?

Postgres 10 nebo novější

btree_gist nyní také pokrývá datový typ uuid , jako Pavel komentoval . (A některé další datové typy, pozoruhodně všechny enum typy.)

Nyní vše, co musíte udělat:nainstalovat rozšíření jednou pro každou databázi:

CREATE EXTENSION btree_gist;

Pak by váš index měl fungovat.

Související:

Postgres 9.6 nebo starší

(Původní odpověď.)
Za normálních okolností bych doporučil další modul btree_gist , ale typ uuid není vztahuje se na něj.

Teoreticky, protože UUID je a 128-bit quantity (podle dokumentace ), nejefektivnějším způsobem by bylo převést jej na dva bigint nebo float8 pro účely indexu. Ale žádné z těchto obsazení není definováno ve standardním Postgresu.

Našel jsem

Chcete-li použít tento funkční index, musí dotazy odpovídat tomuto výrazu. Můžete použít zkratku "value"::text v dotazech (ale ne v definici indexu bez přidání dalších závorek).

Stranou:nepoužívejte value jako název sloupce je to rezervované slovo ve standardním SQL .

Otázka zní:proč potřebujete GiST index. Nejlepší řešení závisí na cíli.



  1. SQL Server:Zpráva 102, úroveň 15, stav 1, řádek 2 Nesprávná syntaxe poblíž '='

  2. Existuje způsob, jak uložit text Unicode v databázi Oracle nakonfigurované jako „US7ASCII“

  3. Nelze přidat pole...velikost řádku...větší než maximální povolená velikost

  4. Jak efektivně určit změny mezi řádky pomocí SQL