Php 查询lat、long和db,并显示范围内的所有记录
我正在工作的程序存储所有用户的纬度和经度(使用mysql和php) 我需要查询并显示100公里范围内的用户列表 我被以下问题困住了Php 查询lat、long和db,并显示范围内的所有记录,php,mysql,Php,Mysql,我正在工作的程序存储所有用户的纬度和经度(使用mysql和php) 我需要查询并显示100公里范围内的用户列表 我被以下问题困住了 Db设计以获得更快的结果。我的数据库结构好吗?如果我想更快的输出将指数的横向和长期工作?在下面的例子中,我应该使用Innodb或myisam引擎吗。如果我们有数十万条记录,在上述情况下查询结果将花费大量时间 我的sql表结构: id(int 11 primary key auto increment) | lat(varchar) | long(varchar)
id(int 11 primary key auto increment) | lat(varchar) | long(varchar)
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance LIMIT 0, 20;
选择id,(3959*acos(cos(弧度(37))*cos(弧度(纬度))*cos(弧度(lng)-弧度(-122))+sin(弧度(37))*sin(弧度(纬度)))作为距离
从标记
距离小于25的
按距离限值0、20排序;
如果使用MySQL>=5.6.1,则可以使用函数st_distance
,请参阅
它需要使用
点
作为坐标的类型。我不知道我在寻找什么,你需要养成这样的习惯,它可以帮助你解决问题。您将获得积分,其他人将被鼓励帮助您……更不用说尝试一些东西,并用一些您发现但有问题的代码为自己解决问题。嘿,请阅读问题并检查答案,我可以通过lat longI have,并且没有任何代码供任何人使用,因此它仍然不清楚,范围太广。在搜索引擎上和/或在堆栈中查找与您想要实现的目标相关的内容。在那之前,这是一个“为我写这个”类型的问题,有太多可能的答案。祝你好运。