Estoy trabajando en una base de datos PostgreSQL con PostGIS. Necesito filtrar una tabla de 8 millones de registros para publicar una vista a través de geoserver.
Conozco dos formas de hacerlo, una es que cree una vista en PostgreSQL para filtrar los datos y publicarlos en el geoservidor, la otra es dejar que el geoservidor haga el filtrado usando sld.
Mi pregunta es cuál es la mejor solución para obtener un mejor rendimiento.
0 votos
Depende del número de características en el conjunto de resultados. El uso de un índice espacial para devolver 7999956 filas sería más lento que el filtrado en la aplicación, pero si el conjunto de resultados está restringido a menos de 5k-10k filas, no hay duda de lo que sería más rápido.
3 votos
Depende de cómo el datastore de PostGIS decida hacer el filtrado, si simplemente convierte el filtro SLD en SQL WHERE... no debería haber mucha diferencia si es que hay alguna. Activa el registro de GeoTools developer desde la utilidad de administración de tu GeoServer y echa un vistazo al SQL que está generando. Naturalmente, debe asegurarse de que tiene un índice en los campos que necesita para filtrar.