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í:
- Omezení vyloučení ve sloupci bitstring s bitovým operátorem AND
- Vytváření vícesloupcového indexu v PostgreSQL obsahujícího skalární i maticové sloupce
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
Stranou:nepoužívejte
Otázka zní:proč potřebujete GiST index. Nejlepší řešení závisí na cíli."value"::text
v dotazech (ale ne v definici indexu bez přidání dalších závorek).value
jako název sloupce je to rezervované slovo ve standardním SQL .