Saya sudah mulai bermain dengan SpatiaLite hari ini dan sudah menemukan masalah.
Untuk setiap lokasi titik disimpan dalam tableOne Saya ingin memilih satu, titik terdekat (jarak linear) dari tableTwo.
Sejauh ini saya datang dengan solusi canggung yang memanfaatkan LIHAT:
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;
Lalu:
SELECT * FROM testview
WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id)
tampaknya melakukan pekerjaan itu.
Dua pertanyaan:
Apakah ada cara untuk melakukan permintaan seperti itu tanpa membuat VIEW?
Apakah ada cara lain untuk mengoptimalkan kueri ini untuk kinerja yang lebih baik? Dalam tabel skenario dunia nyata, One akan memiliki ratusan ribu pasangan catatan, dan tableTwo - 1,3 juta.