Morgen
Meine Umkreissuche ist leider sehr langsam. Bei z.b. 5000 Datensätzen gibt es nur noch ein Timeout.
Es gibt 2 Tabellen orte wo sich die plz mit den Koordinaten aufhalten und die Tabelle Events wo die plz und die daten zu den Events gespeichert sind.
Meine SQL abfrage schaut so aus.
SELECT
o.ort,
o.plz,
e.event_id,
e.kat_id,
e.titel,
e.fsa_datum,
e.location,
k.kategorie,
b.thumb,
(6367.41*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
orte AS o
JOIN
event AS e
ON o.plz = e.plz
JOIN
event_kat AS k
ON e.kat_id = k.kat_id
LEFT JOIN
bilder AS b
ON e.event_id = b.event_id OR b.event_id IS NULL
WHERE
e.gespert = 0
AND
6367.41*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
OR e.plz = '$plz'
Ich bekomme es einfach nicht hin, diese Abfrage so zu optimieren das es erheblich schneller geht.
Die Event Tabelle sollte problemlos mehrere 100.000 Datensätze aufnehmen. Aber mit der Jetzigen Abfrage wird das unmöglich sein.
Ich verwende MYSQL 5.0.34 auf dem Webspace.
Das weitere Problem ich benötige eine Blätterfunktion für die Ergebnisse. Um die Anzahl der Datensätze zu ermitteln lasse ich fast die gleiche Abfrage 2 mal auf die DB los. Der Umkreis in dem gesucht wird liegt bei max 200km. Die geo Daten kommen von opengeodb. Und sind auf das minimum reduziert. Sprich 8180 plz in der Tabelle Orte.
Bin echt DAnkbar für jede Hilfe