我想在 MySQL 数据库中创建一个包含列的表:
- 指数
- 纬度
- 经度
- 国家,城市,人民,建筑物等的地方。
行数巨大,从数十万到数百万行。
如果我想获取表格中选定行的最近位置,我怎样才能以最快的方式做到这一点?
如果需要更多信息、索引或预排序,这没有问题。
======
编辑1:
我已阅读答案,答案是使用公式,例如来自最佳答案:
(((acos(sin((".$latitude."*pi()/180) ) * sin(( geo_latitude
*pi()/180))+cos((".latitude."*pi()/180)) * cos(( geo_latitude
*pi()/180)) * cos(((".$经度。"- geo_longitude
)*pi()/180))))*180/pi())*60*1.1515*1.609344)
如果我有 100 万行,这意味着有 100 万次昂贵的计算。我觉得它会很慢。
是否优化,例如在开始时使用过滤:
1. 如果输入是位置 10.000、20.000 的城市 A,则过滤位于 9.000 到 11.00 的城市。
2. 用上式计算。
如何优化该算法的速度?
====
编辑2:
对不起,我只阅读了最佳答案。
我在另一个答案中找到了我想要的东西:http ://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL