Linuchs: Umkreissuche

Beitrag lesen

Moin,

Wenn du für die Selektion von Datensätzen eine Formel im WHERE hast, muss diese für jeden Datensatz einzeln berechnet werden.

Ja. Und das geht überraschend schnell. Für Veranstaltungen "NL-9670 Winschoten + 20 km" müssen etwa 1000 Veranstaltungen berechnet werden. Nach 0.064 sec sind die 8 Sätze gefunden und die HTML Seite aufbereitet.

Bei NL-9670 Winschoten + 100 km und 100 zulässigen Positionen dre Anzeige werden 0.084 sec gebraucht.

Allerdings wird bei Neueingabe / Änderung pro Veranstaltung ein HTML-Snippet erzeugt und im Datensatz hinterlegt. Aber wir schreiben hier ja über das "Finden" der Sätze.

Die WHERE-Klausel in Rohform (ist jedesmal anders)

FROM        (".$db[0]['termine']." trm1
            ,".$db[0]['orte']." ort1 )

WHERE       ort1.id = trm1.ort_id
AND        (trm1.gesperrt_bis IS NULL OR trm1.gesperrt_bis <= NOW())
AND         trm1.intern_kz = 0
AND         (trm1.tag >= '".addslashes($arr_in['tag_von'])."' OR  trm1.tag_bis >= '".addslashes($arr_in['tag_von'])."' )
AND         (trm1.tag <= '".addslashes($arr_in['tag_bis'])."' OR  trm1.tag_bis <= '".addslashes($arr_in['tag_bis'])."' )
AND         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." ))) <= '".$arr_in['KM']."'
ORDER BY  trm1.tag, trm1.uhr
LIMIT ".$start_nr.",".addslashes($arr_in['posi'])."

Linuchs