MySQL匹配两列

MySQL匹配两列,mysql,Mysql,我有一个有几十万纬度/经度的数据库。我正在尝试将纬度/经度与最近的点匹配。我一直在使用哈弗森公式,但速度很慢。因为我有一个高密度的数据,我宁愿匹配最接近的纬度和经度列。目前我有: SELECT `ward`, ACOS( COS(RADIANS( `staging_gps_names`.latitude )) * COS(RADIANS( 51.5189698 )) * COS(RADIANS( `staging_gps_names`.longitude ) - RA

我有一个有几十万纬度/经度的数据库。我正在尝试将纬度/经度与最近的点匹配。我一直在使用哈弗森公式,但速度很慢。因为我有一个高密度的数据,我宁愿匹配最接近的纬度和经度列。目前我有:

SELECT `ward`, ACOS(
      COS(RADIANS( `staging_gps_names`.latitude ))
    * COS(RADIANS( 51.5189698 ))
    * COS(RADIANS( `staging_gps_names`.longitude ) - RADIANS(  -0.1265003 ))
    + SIN(RADIANS( `staging_gps_names`.latitude ))
    * SIN(RADIANS( 51.5189698 ))
       )*3958.82 AS distance_miles
FROM `staging_gps_names` 
WHERE `staging_gps_names`.latitude BETWEEN 51.52 AND 51.50
ORDER BY distance_miles ASC 
LIMIT 1

尽管如上所述,理想情况下,考虑到我拥有的纬度/经度密度,两列上的匹配更有意义,其中哈弗斯线距离差为负

MIN通常比ORDER BY快得多。。。限制1使用minhaversine公式似乎给了我错误的结果你有纬度指数吗?这是否需要很长时间:从登台地点选择病房、纬度、经度,其中纬度在51.52和51.50之间,按距离排序\u英里ASC限制1?