achso ... ja ok dann klappt es so:
Code: Alles auswählen
SELECT uov.userid, gl.country, gl.plz,
( 6371 * SQRT(2*(1-cos(RADIANS(gl.lat)) * cos(0.88895378390603) * (sin(RADIANS(gl.lon)) * sin(0.12130038301361) + cos(RADIANS(gl.lon)) * cos(0.12130038301361)) - sin(RADIANS(gl.lat)) * sin(0.88895378390603))))
AS Distance
FROM geodb_locations gl
JOIN user_option_value uov ON (uov.userOption65 = gl.plz AND uov.userOption85 = gl.country )
WHERE 6371 * SQRT(2*(1-cos(RADIANS(gl.lat)) * cos(0.88895378390603) * (sin(RADIANS(gl.lon)) * sin(0.12130038301361) + cos(RADIANS(gl.lon)) * cos(0.12130038301361)) - sin(RADIANS(gl.lat)) * sin(0.88895378390603))) <= 50
group by uov.userid order by Distance
bei 50km ... 0,5sek ... ist ja schon wasZeige Datensätze 0 - 49 ( 52 insgesamt, Die Abfrage dauerte 0.5257 Sekunden)


(wenn ich mir mehr Spalten anzeigen lasse, sogar noch mehr

Was meinst du mit Subquery? Könnte das bissel mehr Performance bringen? Bzw. was könnte ich noch in Sachen Performance machen?
Ich muss das ganze vermutlich sogar noch mal wg. Pagination machen ... damit hab ich mich aber noch nicht beschäftigt wie das läuft. Die Pagination die ich kenne, verlangen den SQL-String um nen Start=xyz zu setzen (phpbb3 macht das ja auch so; ok man braucht hier nicht alle Spalten zu ermitteln)
Mir scheint als würde das group by die meiste Performance schlucken. Würde also schon mal sinn machen die GeoDB aufzuräumen (hab das ja nur wg. doppelter PLZ in einem Land) - dann könnte ich das group by einfach weglassen ... bin ich immer noch bei ca. 0,25sek.