6 votos

Consultar eficientemente una tabla PostGIS repartidos por región

Tengo dos PostGIS tablas: una de streets, y uno de regions, lo que, aparte de que abarca la misma extensión espacial, son a priori inconexos. El streets de las consultas de realizar puede ser restringido a una región determinada, mediante el suministro de un conocido de identificación. Para aprovechar esto, he añadido un region_id columna a la streets tabla (con un st_intersects-en función de actualización de la consulta, que fue bastante caro, pero que se realiza sólo una vez).

Mi pregunta: una vez en su lugar, el uso de un índice de la streets.region_id columna será suficiente para hacer consultas de este tipo máximamente eficaz:

select * from streets where region_id = <id> and ...

O es que hay un mecanismo alternativo que podría funcionar mejor?

8voto

Celso Puntos 66

La indexación de una columna que se utiliza en cualquiera de las combinaciones o donde cláusulas es el mejor (y más simple) manera de hacer una consulta eficiente, así que la respuesta es sí.

Otro truco puede extraer es que el CLÚSTER de la tabla contra el índice (recuerde ejecutar VACÍO ANALIZAR después de que la actualización de la tabla de estadísticas). CLÚSTER hace una copia de la tabla (la tabla no se podrá usar durante clustering) la reordenación de los datos, de forma que los mismos valores del índice son almacenados de forma contigua en el disco (por lo tanto maximing de lectura de disco-por delante de la eficiencia).

Asegúrese de leer la documentación sobre el comando CLUSTER para entender si la necesita y cómo funciona.

Ten en cuenta que Postgres no utilizar el índice cuando la condición ES NULA.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X