Você deve usar GiST se quiser usar qualquer método de índice diferente dos índices regulares b-tree (ou índices de hash, mas eles não devem ser usados). Os índices PostGIS requerem GiST.
Os índices de árvore B só podem ser usados para operações básicas envolvendo igualdade ou ordenação, como
=
, <
, <=
, >
, >=
, <>
, BETWEEN
e IN
. Embora você possa criar um índice b-tree em um objeto de geometria (ponto, região, etc), ele só pode ser usado para igualdade como comparações de ordenação como >
geralmente não têm sentido para tais objetos. Um índice GiST é necessário para suportar comparações mais complexas e gerais como "contém", "intersecta", etc. Você pode usar o
btree_gist
extensão
para habilitar a indexação de b-tree para GiST. É consideravelmente mais lento que os índices regulares de b-tree, mas permite criar um índice de várias colunas que contém tipos somente GiST e tipos regulares como text
, integer
, etc Nessas situações, você realmente precisa usar
explain analyze
(explain.depesz.com
é útil para isso) para examinar como o Pg usa vários índices e combinações de índices que você cria. Experimente ordenações de colunas diferentes em índices de várias colunas e veja se dois ou mais índices separados são mais eficazes. Eu suspeito fortemente que você obterá os melhores resultados com o índice GiST de várias colunas neste caso, mas eu tentaria várias combinações diferentes de índices e ordenações de colunas de índice para ver.