Tôi có dữ liệu OpenStreetMap cho Hà Lan được tải vào cơ sở dữ liệu PostGIS (PostgreQuery 8.3 / PostGIS 1.3.3) bằng cách sử dụng lược đồ thẩm thấu . Điều này có nghĩa là tất cả các thẻ được lưu trữ trong một trường hstore . Ngoài chỉ số GIST mà thẩm thấu tạo ra trên trường hình học, tôi đã tạo một chỉ mục GIST bổ sung trên trường thẻ.
Cố gắng truy vấn bằng cả ràng buộc không gian và ràng buộc trên trường thẻ, tôi thấy rằng nó chậm hơn tôi muốn. Một truy vấn như thế này:
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));
mất 22 giây để trả lại 78 hồ sơ.
Có khoảng 53 triệu hồ sơ trong bảng này.
Có cách nào để tăng tốc đáng kể điều này không? Tôi đã nghe nói rằng hstore được triển khai tốt hơn đáng kể trong PostgreSQL 9, liệu có nâng cấp được không?