Tôi đã bắt đầu chơi với SpatiaLite ngày hôm nay và đã vấp phải một vấn đề.
Đối với mỗi vị trí điểm được lưu trữ trong bảngOne tôi muốn chọn một điểm, khoảng cách (khoảng cách tuyến tính) gần nhất từ bảngTwo.
Cho đến nay tôi đã đưa ra một giải pháp vụng về sử dụng XEM:
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;
Và sau đó:
SELECT * FROM testview
WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id)
dường như làm công việc
Hai câu hỏi:
Có cách nào để thực hiện truy vấn đó mà không tạo VIEW không?
Có cách nào khác để tối ưu hóa truy vấn này để có hiệu suất tốt hơn không? Trong một kịch bản thế giới thực, bảng sẽ có hàng trăm nghìn bản ghi và bảngTwo - 1,3 triệu.