Tengo una tabla en PostGIS con una partición bastante fina de una región, que me gustaría disolver en dos niveles superiores mediante dos claves foráneas (por ejemplo, municipio y estado). La partición es real, es decir, las zonas no se solapan, sólo se tocan. Pensé que estaría bien hacerlo en las vistas, para seguir el "no insertar en la base de datos algo que se puede calcular a partir de otros datos existentes". Sin embargo, un simple
SELECT id_municipality, ST_Union(the_geom)
FROM areas
GROUP BY id_municipality
tarda unos 22s en un core i7 para "sólo" unas 36000 áreas con un campo geométrico POLYGON. He indexado el campo de geometría con un índice GIST, pero sin suerte.
Ahora estoy pensando que la única forma práctica sería insertar una columna de geometría en la tabla de municipios y calcularla previamente.
Por desgracia, necesito compartir mis resultados con personas menos técnicas, por lo que instalar paquetes experimentales (como las extensiones topológicas) no es práctico.