Debe usar GiST si desea usar cualquier método de índice que no sean los índices b-tree regulares (o índices hash, pero en realidad no deberían usarse). Los índices PostGIS requieren GiST.
Los índices de árbol B solo se pueden usar para operaciones básicas que involucran igualdad u ordenación, como =
, <
, <=
, >
, >=
, <>
, BETWEEN
y IN
. Si bien puede crear un índice de árbol b en un objeto de geometría (punto, región, etc.), en realidad solo se puede usar para la igualdad como comparaciones de pedidos como >
son generalmente sin sentido para tales objetos. Se requiere un índice GiST para admitir comparaciones más complejas y generales como "contiene", "intersecta", etc.
Puede usar btree_gist
extensión
para habilitar la indexación de árbol b para GiST. Es considerablemente más lento que los índices b-tree regulares, pero le permite crear un índice de varias columnas que contiene tipos solo de GiST y tipos regulares como text
, integer
, etc.
En estas situaciones, realmente necesita usar explain analyze
(explain.depesz.com
es útil para esto) para examinar cómo Pg usa varios índices y combinaciones de índices que crea. Pruebe diferentes órdenes de columnas en índices de varias columnas y vea si dos o más índices separados son más efectivos.
Sospecho firmemente que obtendrá los mejores resultados con el índice GiST de varias columnas en este caso, pero probaría varias combinaciones diferentes de índices y órdenes de columnas de índice para ver.