Indexación espacial

Objetivos




Conocer los fundamentos de la indexación espacial
Aprender a crear índices GiST

indexación espacial




La indexación espacial es una de las funcionalidades más importantes de las bases de datos espaciales

¡Se deben usar cuando las tablas exceden de algunos miles de filas!

Índices espaciales








La caja (box) es el rectángulo definido por las máximas y mínimas coordenadas x e y de una geometría.




Índices espaciales






En la figura se puede observar que solo la linea intersecta a la estrella amarilla, mientras que si utilizamos los índices comprobaremos que la caja amarilla es intersectada por dos figuras la caja roja y la azul. El camino eficiente para responder correctamente a la pregunta ¿qué elemento intersecta la estrella amarilla? es primero responder a la pregunta ¿qué cajas intersectan la caja amarilla? usando el índice (consulta rápida) y luego calcular exactamente ¿quien intersecta a la estrella amarilla? sobre el resultado de la consulta de las cajas.


crear un índice espacial


La síntaxis será la siguiente::

CREATE INDEX [Nombre_del_indice] ON [Nombre_de_tabla] USING GIST ([campo_de_geometria]);
Esta operación puede requerir bastante tiempo en tablas de gran tamaño. 

planificador




El planificador de PostgreSQL debe averiguar que el uso de los índices beneficia a las búsquedas. Se debe obligar al sistema a que actualice sus estadísticas.

vacuum analyze


VACUUM ANALYZE [nombre de la tabla]
VACUUM ANALYZE [nombre de la tabla] (nombre de la columna)



Esta orden actualiza las estadísticas del planificador y elimina los datos borrados(al eliminar con DELETE no se borran los datos de la tabla si no que se marcan como eliminados)

vacuum



VACUUM [nombre de la tabla]
VACUUM [nombre de la tabla] (nombre de la columna)


Esta orden simplemente elimina los datos borrados pero no actualiza las estadísticas

autovacuum





Autovacuum ejecuta las operaciones de VACUUM de manera automática






Una vez creado el índice, hemos de obligar al planificador a actualizar las estadísticas

uso del índice



Para usar el índice debemos incluir el operador && en nuestras consultas
Para las geometrías, el operador && significa “la caja que toca (touch) o superpone (overlap)” de la misma manera que para un número el operador = significa “valores iguales”

explain




PostgreSQL ofrece el comado EXPLAIN para mostrar el plan de ejecución, los pasos que sigue a la hora de ejecutar la consulta SQL

EXPLAIN [ANALYZE] [VERBOSE] sentenciaSQL

operador de cajas




Muchas de las operaciones habituales de PostGIS dispone de operador de cajas, por ejemplo:

ST_Intersects VS _ST_Intersects

Indexación espacial

By Micho García

Indexación espacial

  • 1,288