我在我的应用程序中使用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 :(得分:0)
是的,存在差异:连接到数据库的次数,在更新大量行时可能会大大提高性能。在批量执行多个更新时,您将一次连接到数据库并更新所有行,否则,每次更新时连接一次,并且该时间会增加到执行时间,从而损害您的性能。为了给你一个改进的想法,没有批量与批量是3分钟对7秒我曾经不得不在小型服务器上更新15.000行。
关于您向我们展示的数据批次,您做错了:想法是更新两个不同的行,所以如果您要更新的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');