必须有更快的方法来获得结果。这在我的小型数据库中效果很好,但在我的大型数据库(2000 万行)中,这个过程需要很长时间。我尝试为 lat 和 lon 列创建索引,但这确实有帮助。除了硬件升级,有没有办法可以加快速度?目前它正在使用一组绳索并将它们与数据库中的每一行进行比较。我将结果限制为 10。
$sql = sprintf("SELECT lat, lon, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lon ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM $tbl_name HAVING distance < '%s' ORDER BY distance LIMIT $start, $limit",
mysql_real_escape_string($lat),
mysql_real_escape_string($lon),
mysql_real_escape_string($lat),
mysql_real_escape_string($radius));
$result = mysql_query($sql);
while($row = @mysql_fetch_assoc($result)) {
echo oresults....
}
谢谢,布赖恩