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.