ผมมีข้อมูล OpenStreetMap เนเธอร์แลนด์โหลดลงในฐานข้อมูล PostGIS (PostgreSQL 8.3 / PostGIS 1.3.3) โดยใช้สคีออสโมซิ ซึ่งหมายความว่าแท็กทั้งหมดจะถูกเก็บไว้ในฟิลด์hstore นอกจากดัชนี GIST ที่ออสโมซิสสร้างขึ้นในฟิลด์เรขาคณิตฉันได้สร้างดัชนี GIST เพิ่มเติมในฟิลด์แท็ก
พยายามค้นหาโดยใช้ทั้งข้อ จำกัด เชิงพื้นที่และข้อ จำกัด ในฟิลด์แท็กฉันพบว่าช้ากว่าที่ฉันต้องการ แบบสอบถามแบบนี้:
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));
ใช้เวลา 22 วินาทีในการส่งคืน 78 บันทึก
มีประมาณ 53 ล้านบันทึกในตารางนี้
มีวิธีเร่งความเร็วนี้อย่างมีนัยสำคัญหรือไม่? ฉันได้ยินมาว่า hstore นั้นใช้งานได้ดีกว่าอย่างมากใน PostgreSQL 9 จะอัพเกรดความช่วยเหลือหรือไม่