Php CI活动记录更新和更新批处理之间的差异

Php CI活动记录更新和更新批处理之间的差异,php,codeigniter,activerecord,Php,Codeigniter,Activerecord,我在应用程序中使用CI。我现在想知道update()和update batch之间的区别是什么?也许在性能或流量方面 我有以下更新()的示例代码段: 对于更新_batch() 是的,这是有区别的:连接到数据库的次数,在更新大量行时可能会大大影响性能。在批量执行多个更新时,只需连接一次数据库并更新所有行,否则,每次更新连接一次,该时间将添加到执行时间中,从而影响性能。为了给您一个改进的想法,NoBulk vs bulk是3分钟对7秒,有一次我不得不在一个小型服务器中更新15000行 关于您向我们展

我在应用程序中使用CI。我现在想知道update()和update batch之间的区别是什么?也许在性能或流量方面

我有以下更新()的示例代码段:

对于更新_batch()


是的,这是有区别的:连接到数据库的次数,在更新大量行时可能会大大影响性能。在批量执行多个更新时,只需连接一次数据库并更新所有行,否则,每次更新连接一次,该时间将添加到执行时间中,从而影响性能。为了给您一个改进的想法,NoBulk vs bulk是3分钟对7秒,有一次我不得不在一个小型服务器中更新15000行

关于您向我们展示的数据批处理,您的做法是错误的:想法是更新两个不同的行,因此如果要更新它们,则id(用于检查以选择行的字段)必须不同,否则将更新一行,然后再次更新同一行。检查以下差异:

 $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');

读这本书。有什么你不明白的吗?你看,我的代码片段与文档有点不同,这就是为什么我要问,与其他代码相比,是否有差异或优势。我在这里问,因为文档不足以提供我的问题。哦,我明白了,谢谢。假设id只是一个外键,主键是rowID。这样行吗?不,update\u批处理将使用指定要更新的字段,因此如果要使用rowID更新字段,则应使用rowID
 $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');
 $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');