Php 如何使用一个Mysql查询而不是数组循环内的查询?
下面的查询当前位于一个循环(在PHP中)中,该循环从3个不同的数组获取纬度、经度和id输入。对于数组中的每个位置/键,使用下面的查询从表中选择最近的地理位置 由于阵列的大小通常在500左右,因此500组输入(需要找到最近的地理位置)需要一些时间 我的问题:有没有办法一次使用php中的输入数组使用一个查询,并为每个数组键选择一组最近的地理位置Php 如何使用一个Mysql查询而不是数组循环内的查询?,php,mysql,Php,Mysql,下面的查询当前位于一个循环(在PHP中)中,该循环从3个不同的数组获取纬度、经度和id输入。对于数组中的每个位置/键,使用下面的查询从表中选择最近的地理位置 由于阵列的大小通常在500左右,因此500组输入(需要找到最近的地理位置)需要一些时间 我的问题:有没有办法一次使用php中的输入数组使用一个查询,并为每个数组键选择一组最近的地理位置 $sql="SELECT id, d, tolon, tolat, du, ( 3959 * acos( cos( radians($lat
$sql="SELECT
id, d, tolon, tolat, du,
( 3959 * acos( cos( radians($lat1) )
* cos( radians( travel.tolat ) )
* cos( radians( travel.tolon) - radians($lon1) )
+ sin( radians($lat1) )
* sin( radians( travel.tolat ) ) ) ) AS distance
FROM travel
WHERE userid = $id AND tolon > $lonlow AND tolon < $lonhigh AND tolat > $latlow AND tolat < $lathigh
having distance < $maxdistance ORDER BY distance
";
$sql=“选择
id,d,托伦,托拉特,杜,
(3959*acos(cos(弧度($lat1))
*cos(弧度(travel.tolat))
*cos(弧度(旅行托伦)-弧度($1))
+sin(弧度($lat1))
*sin(弧度(travel.tolat))作为距离
旅行
其中userid=$id和tolon>$lonlow和tolon<$lonhigh和tolat>$latlow和tolat<$lathigh
距离小于按距离排序的最大距离
";
我不认为你会比一群工会做得更好,尽管如果你只需要最接近的工会,增加一个限制1
是个好主意。一组联合将是一个非常长的sql字符串,您可能会遇到一些限制(max packet size
是设置,我相信)。你可能需要一次组织100个左右的工会
如果表中有针对这种查询类型设计的索引,您将获得很多好处。MySQL对于