能否使用单个查询向数据库插入多个实体?
当我按照这里的示例(链接)执行时,我可以在Web Debugger中看到多个查询。
更新日期:23.08.2012
我找到了以下相关链接,希望能帮助有人理解批处理:
更新日期:23.08.2012
我找到了以下相关链接,希望能帮助有人理解批处理:
- http://www.doctrine-project.org/blog/doctrine2-batch-processing.html
- doctrine2 - 如何提高flush效率?
- Doctrine 2:在批处理时插入引用其他实体的实体时出现奇怪的行为
一些人可能会想为什么Doctrine不使用多插入(insert into (...) values (...), (...), (...), ...
首先,此语法仅受mysql和新版postgresql支持。其次,在使用AUTO_INCREMENT或SERIAL且ORM需要标识符以管理对象身份时,很难获得此类多插入中生成的所有标识符。最后,插入性能很少是ORM的瓶颈。对于大多数情况来说,正常插入已足够快,如果你真的想进行快速批量插入,那么多插入不是最好的方式,即Postgres COPY或Mysql LOAD DATA INFILE速度要快几个数量级。
这些就是为什么在ORM中实现在mysql和postgresql上执行多次插入的抽象不值得付出努力的原因。希望这可以解答一些疑问。