2011-04-20 13 views
6

Tenemos una tabla que tiene millones de filas con geometrías PostGIS en ellas. La consulta que queremos realizar es: ¿cuáles son las entradas más recientes que caen dentro de una geometría de límite? El problema con esta consulta es que a menudo tendremos una gran cantidad de elementos que coinciden con el cuadro delimitador (que tiene alrededor de 5 km de radio), y Postgres tendrá que volver a verificar todos los elementos devueltos dentro del cuadro delimitador para obtener su marca de tiempo, luego ordenar y devolver la última N.Índice compuesto de Postgresql para parámetros espaciales + tiempo

Parece que lo que necesitamos es un índice (compuesto?) que tenga en cuenta tanto el índice espacial GIST como la marca de tiempo también. ¿Es posible tal cosa? Intenté varias combinaciones en el paso CREAR INDICE y hasta ahora nada ha funcionado.

+2

¿Es esta respuesta aceptada que trabaja para usted? Parece que el segundo índice de fecha y hora no ayudará. – jlmfao

Respuesta

0

Prefiero hacer dos índices, uno espacial y el segundo en la columna de marca de tiempo. PostgreSQL puede combinar índices muy bien y no necesita 'volver a verificar' las filas encontradas. Podría usar índices para obtener las filas dentro de la geometría y ordenarlas usando el otro índice.

+0

¿cómo puedo saber si los índices se usan adecuadamente en combinación? No creo esta respuesta. –

+1

Use explain (o explain analyze) para verificar el plan de consulta. No hay nada en lo que deberías creer si puedes verificarlo. –

+0

¡gracias! Lo intentaré y votaré si funciona bien. Cuando dije "No creo" es porque MySQL no funciona bien si creo índices separados, especialmente con geoindex juntos. –

Cuestiones relacionadas