#mysql
#mysql
Вопрос:
У меня есть таблица с более чем 500 тыс. записей, и приведенный ниже код просматривает базу данных для получения результатов для конкретного условия, такого как статус.
Я должен выполнить цикл по этим возвращенным результатам, for loop
чтобы обновить другую таблицу, связанную с этим идентификатором пользователя, возвращенным в инструкции select.
Как сделать это более быстрым и последовательным?
$query1=$this->db->get_where('binary_incoms',array('sent_to_wallet'=>0))->result();
foreach($query1 as $row)
{
$uid=$row->uid;/**********ftched user id here **********/
$star_array=['Silver','Gold','Diamond'.'Platinum','Emerald'];
$star=$this->db->select('star')->get_where('user',array('uid'=>$uid))->row()->star;
if(!empty($star) amp;amp; in_array($star,$star_array))
{
if($this->is_greater_than_4($uid)=="yes")
{
if($this->weekOfMonth(date("Y-m-d")) < 4)
{
if($this->check_if_added_user_previous($uid)=='true' || $this->check_if_added_user_current($uid)=='true')
{
$amt=$row->amount;
$this->db->query("UPDATE `user_wallet` SET `binary_amt` = `binary_amt` ". floatval($amt).", `total` = `total` ". floatval($amt)." WHERE `uid` ='".$uid."'");
$this->db->where('id',$row->id);
$this->db->update('binary_incoms',array('sent_to_wallet'=>1));
}
}
else
{
if($this->check_if_added_user_current($uid)=='true')
{
$amt=$row->amount;
$this->db->query("UPDATE `user_wallet` SET `binary_amt` = `binary_amt` ". floatval($amt).", `total` = `total` ". floatval($amt)." WHERE `uid` ='".$uid."'");
$this->db->where('id',$row->id);
$this->db->update('binary_incoms',array('sent_to_wallet'=>1));
}
}
}
else
{
$amt=$row->amount;
$this->db->query("UPDATE `user_wallet` SET `binary_amt` = `binary_amt` ". floatval($amt).", `total` = `total` ". floatval($amt)." WHERE `uid` ='".$uid."'");
$this->db->where('id',$row->id);
$this->db->update('binary_incoms',array('sent_to_wallet'=>1));
}
}
else
{
$amt=$row->amount;
$this->db->query("UPDATE `user_wallet` SET `binary_amt` = `binary_amt` ". floatval($amt).", `total` = `total` ". floatval($amt)." WHERE `uid` ='".$uid."'");
$this->db->where('id',$row->id);
$this->db->update('binary_incoms',array('sent_to_wallet'=>1));
}
}
Комментарии:
1. Что такое `5 лакхов`?
2. 5 тысяч записей в базе данных
3. Пожалуйста, не используйте индийские слова, как вы можете видеть, люди их не поймут