เนื่องจากข้อมูลของคุณไม่ได้ถูกฉายออกมา - มันเป็นจุดบนดาวฤกษ์ - การเรียงลำดับระยะทางเชิงเส้นไม่สมเหตุสมผล ห้าไมล์ที่เส้นศูนย์สูตรเป็นมุมที่เล็กกว่า 5 ไมล์ในวงกลมอาร์กติก แต่โชคดีที่ PostGIS (> = 1.5) มีคำตอบที่คุณต้องการ:
SELECT * FROM table WHERE ST_DWithin(ST_GeogFromText('SRID=4326;POINT(0,0)'), geography(latlon), 12070);
มันมีgeography
ประเภทที่ออกแบบมาสำหรับสิ่งนี้ มันคล้ายกับรูปทรงเรขาคณิต แต่เคยใช้เพียง EPSG: 4326 และมีฟังก์ชั่นที่ใช้งานได้น้อยกว่ามาก
ในตัวอย่างด้านบนฉันได้เรียกST_GeogFromText () (นอกจากนี้ยังมีST_GeographyFromText ()และฉันไม่แน่ใจว่ามีความแตกต่าง) ในจุดที่น่าสนใจ (อาจทำงานได้กับ WKT ปกติเนื่องจากพารามิเตอร์ SRID เป็น ซ้ำซ้อน) และโยนคอลัมน์ Latlon เป็นประเภทภูมิศาสตร์ หากคุณกำลังทำสิ่งเหล่านี้จำนวนมากมันจะมีประสิทธิภาพมากกว่าในการสร้างคอลัมน์ทางภูมิศาสตร์ในตารางของคุณและข้ามการแสดงทั้งหมด ในที่สุดST_D ภายใน ()สามารถใช้พารามิเตอร์ทางภูมิศาสตร์และทำสิ่งที่ถูกต้องด้วยระยะทางเชิงเส้น