Ho iniziato a giocare con SpatiaLite oggi e mi sono già imbattuto in un problema.
Per ogni posizione del punto memorizzata nella tabella Uno vorrei selezionare un punto più vicino (distanza lineare) dalla tabella Due.
Finora ho trovato una soluzione goffa che utilizza VIEW:
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;
E poi:
SELECT * FROM testview
WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id)
sembra fare il lavoro.
Due domande:
C'è un modo per eseguire tale query senza creare una VISTA?
Esiste un altro modo per ottimizzare questa query per prestazioni migliori? In una tabella di scenari del mondo reale, One avrà centinaia di migliaia di record e una tabella di due - 1,3 milioni.