【发布时间】:2012-08-22 15:10:49
【问题描述】:
是否可以通过单个查询将多个实体插入数据库? 当我使用来自here 的示例时,我可以在 Web 调试器中看到几个查询
2012 年 8 月 23 日更新
我找到了以下相关链接。我希望它有助于某人理解批处理:
- http://www.doctrine-project.org/blog/doctrine2-batch-processing.html
- doctrine2 - How to improve flush efficiency?
- Doctrine 2: weird behavior while batch processing inserts of entities that reference other entities
主要内容:
有些人似乎想知道为什么 Doctrine 不使用 多插入(插入(...)值(...),(...),(...),...
首先,这种语法只在 mysql 和更新的 postgresql 版本上被支持。其次,没有简单的方法来掌握所有 使用时在这样的多插入中生成的标识符 AUTO_INCREMENT 或 SERIAL 并且 ORM 需要身份标识符 对象的管理。最后,插入性能很少是 ORM 的瓶颈。普通插入速度足够快 大多数情况下,如果您真的想进行快速批量插入,那么 无论如何,多插入不是最好的方法,即 Postgres COPY 或 Mysql LOAD DATA INFILE 的速度要快几个数量级。
这就是为什么不值得努力实现在 mysql 和 postgresql 上执行多插入的抽象的原因 一个 ORM。 我希望这可以消除一些问号。
【问题讨论】:
标签: symfony doctrine-orm