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

Why does sql query works faster with many records in odoo?

当我需要使用 write 更新大量记录时遇到问题 示例:self.sudo().write({'field': 正确}) 在这种情况下,我花了 10-15 分钟才完成。但是,当我尝试使用 sql 查询时,它花了我几秒钟。 我的疑问是,为什么会发生这种情况?为什么使用其中一种更好?或者在什么情况下我应该使用其中一种?

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

  1. 正在检查模型访问权限。

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

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

  4. 发布 mail.thread 条消息。

  5. 在某些方法中使用 api.one 这样 odoo 将对每条记录重复相同的步骤并执行查询 N 次(非常非常糟糕的事情)

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