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 .