PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Índice Postgres GIST vs Btree


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.