我目前有两个表,每个表有大约40k行。每个存储纬度/长度在其中,我需要从表2'中找出纬度/经度。这至少是距离表格1的长度/长度的距离。对于每个纬度/经度的表1'。
出于我的目的,我正在使用以下查询,但由于我的查询遍历整个40k * 40k行,因此需要花费大量时间,所以我可能正在寻找可以为此进行的一些优化。
$select_Table1 = 'Select id, latn, longe from table1';
$table1Data = mysqli_query($connection,$select_Table1) or die("error :".mysqli_error($connecttion));
$radius = 6371;//Mean radius of earth
$deg2Rad = (pi()/180);
while($table1_rows = mysqli_fetch_row($table1Data))
{
$table1Id = $table1_rows[0];
$table1Lat = $table1_rows[1];
$table1Long = $table1_rows[2];
$a = "Select $radius * acos(sin($deg2Rad*($table1Lat)) * sin($deg2Rad*(table2.lat)) + cos($deg2Rad*($table1Lat)) * cos($deg2Rad*(table2.lat)) * cos($deg2Rad*($table1Long-table2.long))) as Distance from table2 order by Distance limit 1";
$result = mysqli_query($connection, $a) or die("Error :".mysqli_error($connection));
while($rows = mysqli_fetch_row($result))
{
//Some calculations here
}
}
此外,表格是动态的,它们经常被更改,因此无法进行预先计算。