Einzelnen Beitrag anzeigen
  #75 (permalink)  
Alt 31-12-2003, 17:02
Chriss
 Registrierter Benutzer
Links : Onlinestatus : Chriss ist offline
Registriert seit: Oct 2001
Beiträge: 89
Chriss ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Den Ansatz von @RGummi habe ich nun auf die Tabelle geo_locations vom
Projekt opengeo übertragen:

PHP-Code:
SELECT ortplzs".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*
(
sin(RADIANS(laenge))*sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-
sin(RADIANS(breite))*sin(".$breite."))) AS Distance FROM geo_locations
WHERE 
".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-sin(RADIANS(breite))*
sin(".$breite."))) <= ".$umkreis." ORDER BY Distance
Anschließend habe ich eine Verknüpfung zu einer "Mitglieds"-Tabelle, eine Tabelle mit Namen und u. a. PLZ, erstellt, so dass ich diese Tabelle nun sortiert nach PLZ/Entfernung ausgeben kann. Zur Zeit nutze ich einen Umkreis von max. 50 km. Dann dauert die Abfrage ca. 4 Sekunden. Gibt es vielleicht noch Möglichkeiten, die Performance zu verbessern, so dass man den Umkreis noch weiter vergrößern kann?

Bringt ein Update auf MySQL 4.x ggf. einen entscheidenden Vorteil?

Gruß
Chriss
PS: Beirtrag bearbeitet, da sich anfängliche Frage erledigt hat.

Geändert von Chriss (13-01-2004 um 10:45 Uhr)
Mit Zitat antworten