gpt4 book ai didi

php - 如何减少使用PHP和MySQL对海量数据执行某些操作所需的时间?

转载 作者:行者123 更新时间:2023-11-29 10:30:07 25 4
gpt4 key购买 nike

我的数据库中有 200000 多行数据,我希望将每一行的数据与其他行的数据进行检查,并执行某些操作并显示结果。

假设考虑下表(树数据):p_teams

id  name  parentname  placedunder   position  

1 x root root root

2 y x x left

3 z x x right

4 a x y left

5 b z z right

等等..

奖金表包含姓名和奖金。

示例:

name bonus 
x 10
y 20

为了得到左树和右树的总奖金,我应该分别找到所有 child 的奖金。所以我需要检查 children 的情况。我有一个逻辑,它适用于较小的数据,但随着数据的增加,执行 PHP 函数所需的时间也会增加。

这里的逻辑(我使用了codeigniter):

function getBous($name){
$data = array('name'=>$name);
$res = $this->db->get_where('p_teams',$data);
if($res->num_rows()>0){
$data = array('parentname'=>$name);
$this->db->select('name,position');
$res = $this->db->get_where('p_teams',$data);
if($res->num_rows()>0){
$row = $res->result_array();
$i = 0;
$temp = array();
$temp1 = array();
foreach($row as $parent){
$temp[$i] = $parent['name'];
$position[$i] = $parent['position'];
$i = $i+1;
}
$abonus = 0;
$bbonus = 0;
while(sizeof($temp) != 0 && sizeof($position) != 0){
$data = array('name'=>$temp[0]);
$this->db->select('bonus');
$res = $this->db->get_where('bonus',$data);
if($res->num_rows()>0){
$row = $res->row_array();
$bonus = $row['bonus'];
}
else{
$bonus = 0;
}
if($position[0] === "left"){
$abonus = $abonus + $bonus;
}
else if($position[0] === "right"){
$bbonus = $bbonus + $bonus;
}
$data = array('parentname'=>$temp[0]);
$this->db->select('name,position');
$res = $this->db->get_where('p_teams',$data);
if($res->num_rows()>0){
$row = $res->result_array();
$i=0;
foreach($row as $parent){
$temp1[$i] = $parent['name'];
$position1[$i] = $parent['position'];
$i = $i+1;
}
$temp = array_merge($temp,$temp1);
$position = array_merge($position,$position1);
}
else{

}
unset($temp[0],$position[0]);
$temp = array_values($temp);
$position = array_values($position);
echo "<pre>";
echo "abonus:".$abonus." bbonus:".$bbonus." name:".$temp[0];
echo "</pre>";
}
}
}
else{

}
}

那么,解决此类问题的最佳方法是什么以及如何处理大量数据?

最佳答案

我对你的数据结构了解不多。尽管如此,我还是建议使用连接并在存储过程/ View 的帮助下将其从 Codeigniter 中取出(我更喜欢您的情况下的 View )。使用它,您还可以消除复杂性并提高性能

关于php - 如何减少使用PHP和MySQL对海量数据执行某些操作所需的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47562499/

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