是否可以通过单个查询将多个实体插入数据库?当我使用此处的示例时,我可以在 Web 调试器中看到几个查询
2012 年 8 月 23 日更新
我找到了以下相关链接。我希望它有助于某人理解批处理:
- http://www.doctrine-project.org/blog/doctrine2-batch-processing.html
- 学说2 - 如何提高冲洗效率?
- 原则 2:批量处理引用其他实体的实体插入时的奇怪行为
主要的事情:
有些人似乎想知道为什么 Doctrine 不使用多重插入(insert into (...) values (...), (...), (...), ...
首先,这种语法仅在 mysql 和更新的 postgresql 版本上受支持。其次,当使用 AUTO_INCREMENT 或 SERIAL 时,没有简单的方法可以在这样的多插入中获取所有生成的标识符,并且 ORM 需要标识符来进行对象的身份管理。最后,插入性能很少是 ORM 的瓶颈。普通插入对于大多数情况来说已经足够快了,如果你真的想做快速批量插入,那么多插入无论如何都不是最好的方法,即 Postgres COPY 或 Mysql LOAD DATA INFILE 快几个数量级。
这就是为什么不值得努力在 ORM 中实现对 mysql 和 postgresql 执行多插入的抽象的原因。我希望这可以消除一些问号。