Markus*: Gauß'sche Umkreissuche in der Matrix

Beitrag lesen

Hey Forum!
Ich möchte aus eine Datenmenge von Koordinaten all diejenigen ermitteln, die eine gewisse Nähe zueinander aufweisen. In meiner Testdatenmenge hab ich erstmal 5000 Einträge mit random-Werten zwischen 0 und 10000 in x und y sowie einer fortlaufenden ID erzeugt.

Nun hab ich erstmal stumpf folgendes Query eingetippt

SELECT gp.id, gpx.id
FROM positions gp, positions gpx
WHERE gpx.x +20 > gp.x
AND gpx.x -20 < gp.x
AND gpx.y +20 > gp.y
AND gpx.y -20 < gp.y
AND gpx.id != gp.id

was mir auch wie zu erwarten ein sinnvolles Resultat ausgibt, wenn auch 12 <-> 3 und zusätzlich auch noch 3 <-> 12 gefunden wird, was erstmal unkritisch ist. Wie allerdings auch zu erwarten war, dauert das Ganze ne Weile. Hat jemand ne intelligente Idee, wie man sowas besser lösen kann?

Thanks und Gruß!