ฉันเริ่มเล่นกับ SpatiaLite วันนี้และพบปัญหาแล้ว
สำหรับตำแหน่งของจุดแต่ละจุดที่เก็บไว้ในตารางฉันต้องการเลือกหนึ่งจุดที่ใกล้ที่สุด (ระยะทางเชิงเส้น) จาก tableTwo
จนถึงตอนนี้ฉันคิดวิธีแก้ปัญหาแบบเงอะงะที่ใช้ประโยชน์จาก 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;
แล้ว:
SELECT * FROM testview
WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id)
ดูเหมือนว่าจะทำงาน
สองคำถาม:
มีวิธีในการดำเนินการค้นหาโดยไม่สร้าง VIEW หรือไม่
มีวิธีอื่นในการเพิ่มประสิทธิภาพการค้นหานี้เพื่อประสิทธิภาพที่ดีขึ้นหรือไม่ ในตารางสถานการณ์ในโลกแห่งความจริงหนึ่งจะมีบันทึกนับร้อยนับพันคู่และตารางสอง - 1.3 ล้าน