Ich habe das mal (nach gründlicher Überlegung) in der Datenbank getestet:
Danke.
Ich nehme ja an, Du hast auf
ORT
,KM
,lg
einen Index - Oder?
Auf ort_id ja. Die KM bedeuten, dass alle Orte mit Veranstaltungen im Umkreis ermittelt werden. KM ist nicht Bestandteil der Datensätze.
Da wird für jeden der ca. 1000 Termine die Entfernung zur ort_id berechnet. Der SELECT enthält die Zeile
,ROUND( 6366.19773095 * ACOS( SIN(".$rad_lat1.") *SIN(RADIANS(ort1.geo_breite)) +COS(".$rad_lat1.") *COS(RADIANS(ort1.geo_breite)) *COS(RADIANS(ort1.geo_laenge) -".$rad_lon1." ))) distanz_km";
sieht kompliziert aus, ergibt aber fast immer einen Durchlauf unter 1 s, siehe unten rechts auf der Seite http://remso.eu/?ORT=7140
Wenn der Parameter KM nicht kommt, wird standardmäßig 20 genommen.