Markus**: Um"quadraht"suche...

Beitrag lesen

Hallo Forum...

In einem Raster von 10000x10000 habe ich zufällig 4791 Punkte verteilt.
Nun möchte ich wissen, welche Punkte Nachbarpunkte in einem gewissen Umkreis, bzw. umquadraht aufweisen. Zur Zeit hab ich das Ganze in einer Datenbanktabelle mit den Spalten id, x, y abgelegt und die Prüfung mache ich wie folgt:

SELECT r1.id, r2.id  
FROM positions r1  
JOIN positions r2 ON r1.id < r2.id  
WHERE ABS( r1.x - r2.x ) <5  
AND ABS( r1.y - r2.y ) <5

Der Join enthält also wie folgt: (4791*4790)/2 = 11.474.445 Datensätze; über Elfmillionen Mal die Vergleiche in der WHERE-Klausel berechnen, dauert natürlich so seine Zeit.

Hat hier irgendjemand 'ne Idee, wie man das optimieren kann? Nicht zwingend mit Hilfe einer Datenbank, denke eher an eine effizientere mathematische Lösung, die nicht den Gauß bedarf um die 11.474.445 Vergleiche zu vermeiden.

Gruß, Markus**