Tengo datos de OpenStreetMap para los Países Bajos cargados en una base de datos PostGIS (PostgreSQL 8.3 / PostGIS 1.3.3) usando el esquema de ósmosis . Esto significa que todas las etiquetas se almacenan en un campo hstore . Además del índice GIST que crea la ósmosis en el campo de geometría, creé un índice GIST adicional en el campo de etiquetas.
Intentando consultar usando una restricción espacial y una restricción en el campo de etiquetas, encuentro que es más lento de lo que me gustaría. Una consulta como esta:
SELECT n.geom,n.tags,n.tstamp,u.name FROM nodes AS n
INNER JOIN users AS u ON n.user_id = u.id
WHERE tags->'man_made'='surveillance'
AND ST_Within(geom, ST_GeomFromText('POLYGON((4.0 52.0,5.0 52.0,5.0 53.0,4.0 53.0,4.0 52.0))',4326));
Tarda 22 segundos en devolver 78 registros.
Hay alrededor de 53 millones de registros en esta tabla.
¿Hay alguna manera de acelerar significativamente esto? He oído que hstore se implementa significativamente mejor en PostgreSQL 9, ¿ayudaría la actualización?