为什么sql查询对odoo中的许多记录工作更快?

时间:2019-01-04 17:31:22

标签: python odoo

当我需要使用 write 更新许多记录时遇到问题,例如:self.sudo()。write({'field':True}) 在这种情况下,我花了10到15分钟才能完成此操作。但是,当我尝试使用sql查询时,我花了几秒钟。 我的疑问是,为什么会发生这种情况?为什么最好使用其中一个?还是在哪种情况下应该使用其中一个?

1 个答案:

答案 0 :(得分:3)

因为写入中发生了很多事情,而不仅仅是执行查询。例如:

  1. 检查模型访问权限。

  2. 检查记录规则是否具有访问权限,这是最沉重的一步。

  3. 计算依赖于此更新的其他值(如果存在)。

  4. 发布mail.thread消息。

  5. 以某种方式使用api.one,odoo将为每个记录重复相同的步骤并执行N次查询(这非常不好)

请记住,使用普通SQL不会触发计算值或安全检查,因此请不要使用它或小心使用它。