разница между обновлением активной записи CI и update_batch

Я использую CI для моего приложения. В настоящее время мне интересно, в чем разница между update () и пакетом обновлений? может быть с точки зрения производительности или потока?

У меня есть этот образец фрагмента для обновления ():

$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name 2' ,
'date' => 'My date 2'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name 2' ,
'date' => 'Another date 2'
)
);
$this->db->where('id', 1)->update('user', $data);

для update_batch ();

 $data = array(
array(
'id'   => 1,
'title' => 'My title' ,
'name' => 'My Name 2' ,
'date' => 'My date 2'
),
array(
'id'   => 1,
'title' => 'Another title' ,
'name' => 'Another Name 2' ,
'date' => 'Another date 2'
)
);
$this->db->update_batch('user', $data, 'id');

0

Решение

Да, есть разница: сколько раз вы подключаетесь к базе данных, что может сильно повлиять на вашу производительность при обновлении большого количества строк. При выполнении нескольких массовых обновлений вы подключаетесь один раз к базе данных и обновляете все строки, в противном случае вы подключаетесь один раз за обновление, и это время добавляется к времени выполнения, что ухудшает вашу производительность. Чтобы дать вам представление об улучшении, объемная и объемная задачи не составляли 3 минуты против 7 секунд, когда мне приходилось обновлять 15.000 строк на небольшом сервере.

Что касается пакета данных, который вы нам показываете, вы делаете это неправильно: идея состоит в обновлении ДВУХ РАЗНЫХ СТРОК, поэтому идентификатор (поле, которое вы используете для проверки выбора строк) ДОЛЖЕН БЫТЬ другим, если вы обновляете их, иначе Вы обновляете одну строку, а затем снова эту же строку. Проверьте разницу ниже:

 $data = array(
array(
'id'   => 1,
'title' => 'My title' ,
'name' => 'My Name 2' ,
'date' => 'My date 2'
),
array(
// This id MUST BE of a different row if you want to achieve something, XD
'id'   => 2,
'title' => 'Another title' ,
'name' => 'Another Name 2' ,
'date' => 'Another date 2'
)
);
$this->db->update_batch('user', $data, 'id');
0

Другие решения

Других решений пока нет …