Je moet GiST gebruiken als je een andere indexmethode wilt gebruiken dan de reguliere b-tree-indexen (of hash-indexen, maar ze zouden eigenlijk niet moeten worden gebruikt). PostGIS-indexen vereisen GiST.
B-tree-indexen kunnen alleen worden gebruikt voor basisbewerkingen met betrekking tot gelijkheid of ordening, zoals =
, <
, <=
, >
, >=
, <>
, BETWEEN
en IN
. Hoewel u een b-tree-index op een meetkundig object (punt, regio, enz.) kunt maken, kan deze alleen daadwerkelijk worden gebruikt voor gelijkheid als ordeningsvergelijkingen zoals >
zijn over het algemeen zinloos voor dergelijke objecten. Een GiST-index is vereist om complexere en algemenere vergelijkingen zoals "bevat", "kruist", enz. te ondersteunen.
U kunt de btree_gist
gebruiken extensie
om b-tree indexering voor GiST in te schakelen. Het is aanzienlijk langzamer dan gewone b-tree-indexen, maar u kunt een index met meerdere kolommen maken die zowel GiST-only typen als reguliere typen zoals text
bevat. , integer
, enz.
In deze situaties moet je echt explain analyze
gebruiken (explain.depesz.com
is hiervoor handig) om te onderzoeken hoe Pg verschillende indexen en combinaties van indexen gebruikt die u aanmaakt. Probeer verschillende kolomvolgorde in indexen met meerdere kolommen en kijk of twee of meer afzonderlijke indexen effectiever zijn.
Ik vermoed sterk dat je in dit geval de beste resultaten krijgt met de GiST-index met meerdere kolommen, maar ik zou verschillende combinaties van indexen en volgorde van indexkolommen proberen om te zien.