gpt4 book ai didi

php - mysql 性能将所有结果输出到 phparray 或仅在 while 循环中使用

转载 作者:行者123 更新时间:2023-11-30 01:37:04 25 4
gpt4 key购买 nike

我有一个表,每年将添加大约 500,000 行。

我有一个查询来选择 value1 和 value2 之间的行,这将输出 100 到 4000 行。每行有 5 列,小数据(id 字段和经纬度字段)。

我之前使用 mysql 直接在需要的代码中编写了此代码,并使用 while 循环来处理和打印查询返回的每一行。

我正在从 mysql 更改为 mysqli(如果重要的话使用过程)并使用准备好的语句。在这个“转换”期间,我正在整理为查询创建函数的代码,因为它们会重复很多次,因此我将它们包含在一个functions.php文件中。

因此,我现在不再直接在代码中逐行处理 mysql 结果,而是将查询中的所有行放入一个数组中,然后从函数返回,并逐一循环在需要的代码中。

供引用的代码位:

function...
...
mysqli_stmt_bind_result($stmt,
$id,
$heading,
$journey,
$lat,
$lon);

$map_array = array();
$n=0;
while (mysqli_stmt_fetch($stmt)) {


//output to array
$map_array[$n]['id'] = $id;
$map_array[$n]['heading'] = $heading;
$map_array[$n]['journey'] = $journey;
$map_array[$n]['lat'] = $lat;
$map_array[$n]['lon'] = $lon;
$n=$n+1;
}
return $map_array;
}

然后我必须循环遍历数组并在代码中处理它。

与我以前的方式相比:

$lasthead ='0';
while ($row=mysql_fetch_array($result)){
$lat = $row['lat'];
$lon = $row['lon'];
$id = $row['id'];
$heading = $row['heading'];
$journey = $row['journey'];

$doprint='1';
if ($journey =='2' && $heading !==''){
$maxvar = max($heading, $lasthead);
$minvar = min($heading, $lasthead);
$headdiff = $maxvar - $minvar;
if ($headdiff < 1.5) { $doprint = '0'; }
}
if ($doprint =='1'){ print "new google.maps.LatLng($lat, $lon),\n";}

$doprint='1';
$lasthead = $heading;
$heading ='';
}

问题。将所有结果加载到数组中,然后处理数组在性能方面是一个坏主意吗?对比 while 循环按行处理 mysql 结果。

谢谢

最佳答案

两次查看记录不会获得任何结果。在 mysql 获取循环中完成所有工作。

唯一你不想这样做的时候是如果

  1. 您在循环中所做的事情非常昂贵(就时间而言),并且您想要关闭语句句柄。

  2. 您必须多次遍历数据。

关于php - mysql 性能将所有结果输出到 phparray 或仅在 while 循环中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com