Estoy tratando de ejecutar una operación 'disolver' en PostGIS usando el comando ST_Union.
La capa de entrada es ciertamente bastante grande y compleja. Por "grande" me refiero a 57.771 entidades, con un número de vértices que van de 4 a 758.018 por entidad, con un promedio de alrededor de 86 vértices por entidad. Solo alrededor de 10 de las características tienen> 10,000 vértices. Por "complejo" quiero decir que los polígonos tienen muchos agujeros, superposiciones desordenadas, islas, etc., y que los polígonos grandes tienden a tener un cuadro delimitador que cubre muchos de los polígonos más pequeños, tal vez los índices de desgarre sean menos útiles.
El problema es que la consulta es extremadamente lenta hasta el punto de ser inutilizable. Leí la publicación de Paul de 2009 aquí que me llevó a creer que mi consulta aún debería ser bastante rápida. Estoy usando el siguiente comando; ¿Estoy haciendo algo descaradamente incorrecto o ineficiente?
SELECT ST_Union(f.geom) as geom, column1,column2,column3
FROM "inputlayer" As f
GROUP BY column1,column2,column3
Editar: estoy usando:
POSTGIS="2.1.4 r12966" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.7.1, 23 September 2009" GDAL="GDAL 2.0.0dev, released 2014/04/16" LIBXML="2.7.8" LIBJSON="UNKNOWN" TOPOLOGY RASTER PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
La máquina en la que estoy ejecutando el servidor db es una máquina virtual sin mucha potencia. ¡Probaré la idea SET work_mem = 50000 y veré cómo van las cosas!