使用大数据集中的纬度和经度进行最近的基于php的搜索

使用大数据集中的纬度和经度进行最近的基于php的搜索,php,mysql,algorithm,Php,Mysql,Algorithm,我们有使用纬度、经度和半径进行搜索的大型数据库。搜索整个数据库需要很长时间。我们不想搜索整个数据库,只想搜索范围内的特定区域。我们想使用纬度和经度在表中插入区域。请提出任何快速最近搜索技术的想法 如何使用纬度、经度和半径查找公共区域? 我们需要使用纬度、经度和半径来查找公共区域,以便仅搜索该区域而不是整个数据库搜索。了解一些三角函数和MySql的基本知识,我建议您尝试此解决方案 SELECT * FROM Places WHERE acos(sin([givenlatitude]) * sin(

我们有使用纬度、经度和半径进行搜索的大型数据库。搜索整个数据库需要很长时间。我们不想搜索整个数据库,只想搜索范围内的特定区域。我们想使用纬度和经度在表中插入区域。请提出任何快速最近搜索技术的想法

如何使用纬度、经度和半径查找公共区域?


我们需要使用纬度、经度和半径来查找公共区域,以便仅搜索该区域而不是整个数据库搜索。

了解一些三角函数和MySql的基本知识,我建议您尝试此解决方案

SELECT * FROM Places WHERE acos(sin([givenlatitude]) * sin(Lat) + cos([givenlatitude]) * cos(Lat) * cos(Lon - ([givenlongitude]))) * 6371 <= [givenDistance];

SELECT*从acos(sin([givenlatude])*sin(Lat)+cos([givenlatude])*cos(Lat)*cos(Lon-([givenlatude]))*6371我们已经使用了这个公式,但获取结果需要时间。我们希望搜索的不是整个数据库,而是最近的区域范围选择vb.id、vk.keyword、vb.business\u address,(6371*ACOS(弧度(28.684342))*COS(弧度(vb.latitude))*COS(弧度(vb.longitude)-弧度(77.137941))+SIN(弧度(28.684342))*SIN(弧度(vb.latitude)))作为与供应商的距离,vendors\u关键字vk,其中vk.vender\u id=vb.vendor\u id和vk.keyword\u id=3258具有距离