Hi,

Stephan Wolff wrote:
Ich hatte vermutet, dass meine verschachtelten Abfragen Schuld sind, aber Frederik hat mit dieser Beschreibung die Hauptursache getroffen.
Ich habe den Zeitbedarf verschiedener SQL-Abfragen für größere Bereiche
verglichen. Eine einfache Abfrage aller Punkte mit "power=generator"

$ time psql -c "select count(*) from planet_point where power=generator and way && <bounding_box> ...

benötigte in meinem Testbereich etwa 2,5 Minuten.

Probier mal

CREATE INDEX generator_index ON planet_osm_point using GIST(way GIST_GEOMETRY_OPS) WHERE power=generator;

Der Request sollte nur wenige Minuten dauern. Danach muesste Deine Abfrage schneller sein.

Somit bleibt zur Beschleunigung nur die Möglichkeit, eine eigene
Datenbank vorab anzulegen. Kann man Osm2pgsql so konfigurieren,
dass eine weitere Tabelle mitgepflegt wird oder muss man in
regelmäßigen Abständen die gesamte Hauptdatenbank filtern?

Der Query oben macht im Effekt das; er erzeugt einen bedingten Index, in dem *nur* alle power=generator-Nodes anhand ihrer Position verzeichnet sind. Das braucht zusaetzlich Platz (aber nicht viel - sind ja nicht so viele Nodes) und verlangsamt Updates (aber nicht viel), sollte Abfragen aber deutlich beschleunigen.

Bye
Frederik

--
Frederik Ramm  ##  eMail [email protected]  ##  N49°00'09" E008°23'33"

_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an