sql >> Base de Datos >  >> RDS >> PostgreSQL

Índice Postgres GIST vs Btree

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.