Hallo, Bernd Wurst wrote: > Ich meine, bei den Projekten von denen wir hier reden ist eine Abfrage > WHERE lat BETWEEN 50.1 AND 50.2 AND lon BETWEEN 10.1 AND 10.2 > völlig gleichwertig zu deiner Bounding-Box-Geometrie. Ob das jetzt Fehler im > Meter- oder je nach Größe im niedrigen Kilometer-Bereich hat, ist doch Jacke > wie Hose bei den Dingen hier.
Ich weiss nicht, ob ihr da nicht aneinander vorbeiredet: > Wie gesagt, ich würde aus Performance-Gründen noch z.B. zwei zusätzliche, > indizierte Spalten mit int(lat*100) und int(lon*100) anlegen um nur noch > Ganzzahlen zum Vergleich zu benutzen. Bei deinem Beispiel (where lat... and lon...) wird MySQL immer nur einen der beiden Indizes nutzen, und auf der anderen Spalte ist dann table scan angesagt. OSM hatte ja lange Zeit selbst MySQL in Betrieb und hat dafuer praktisch von Hand einen zweidimensionalen Index nachgebaut, indem zu jedem Koordinatenpaar ein "tile"-Wert errechnet wurde, und auf diesen wurde dann indiziert; eine Abfrage sah dann so aus: ... where tile in (riesenliste) and lat ... and lon ... dadurch wurde mit dem "tile" vorgefiltert und dann mit lat/lon die Detailauswahl getroffen. Ulkigerweise wird diese Methode auch jetzt, nach dem Wechsel auf Postgres, beibehalten, obwohl man dort (auch ohne PostGIS) einen zweidimensionalen Index zur Verfuegung haette. Bye Frederik _______________________________________________ Talk-de mailing list [email protected] http://lists.openstreetmap.org/listinfo/talk-de

