Ich habe heute angefangen, mit SpatiaLite zu spielen und bin bereits auf ein Problem gestoßen.
Für jede in tableOne gespeicherte Punktposition möchte ich einen nächstgelegenen (linearen Abstand) Punkt aus tableTwo auswählen.
Bisher habe ich eine ungeschickte Lösung gefunden, die VIEW verwendet:
CREATE VIEW testview AS
SELECT
A.id ,
B.myValue,
Distance(A.Geometry, B.Geometry) AS distance
FROM tableOne AS A, tableTwo AS B
WHERE distance < 10000
ORDER BY A.Id, distance;
Und dann:
SELECT * FROM testview
WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id)
scheint den Job zu machen.
Zwei Fragen:
Gibt es eine Möglichkeit, eine solche Abfrage durchzuführen, ohne eine ANSICHT zu erstellen?
Gibt es eine andere Möglichkeit, diese Abfrage für eine bessere Leistung zu optimieren? In einem realen Szenario wird tableOne Hunderttausende von Datensätzen und tableTwo - 1,3 Millionen haben.