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