15
วิธีที่เร็วที่สุดในการค้นหาระยะห่างระหว่างคะแนน Lat / Long สองจุด
ปัจจุบันฉันมีสถานที่ตั้งอยู่หลายล้านแห่งในฐานข้อมูล mysql ทั้งหมดที่มีลองจิจูดและข้อมูลละติจูด ฉันพยายามค้นหาระยะห่างระหว่างจุดหนึ่งและจุดอื่น ๆ ผ่านทางแบบสอบถาม ไม่เร็วเท่าที่ฉันต้องการโดยเฉพาะอย่างยิ่งเมื่อมีผู้ชมมากกว่า 100 ครั้งต่อวินาที มีแบบสอบถามที่เร็วขึ้นหรืออาจเป็นระบบที่เร็วกว่า mysql สำหรับสิ่งนี้หรือไม่? ฉันใช้คำค้นหานี้: SELECT name, ( 3959 * acos( cos( radians(42.290763) ) * cos( radians( locations.lat ) ) * cos( radians(locations.lng) - radians(-71.35368)) + sin(radians(42.290763)) * sin( radians(locations.lat)))) AS distance FROM locations WHERE active = 1 HAVING distance < 10 …