Оптимизация запросов требуется в следующем коде цикла For

#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. Пожалуйста, не используйте индийские слова, как вы можете видеть, люди их не поймут