¿Es posible insertar varias entidades en DB con una sola consulta? Cuando utilizo un ejemplo de here puedo ver varias consultas en el depurador WebDoctrine2 Batch Insert
ACTUALIZADO 23.08.2012
encontré los siguientes enlaces relacionados. Espero que le ayudará a alguien a entender un procesamiento por lotes:
- 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
Los elementos principales:
Algunas personas parecen estar preguntándose por qué Doctrine no usa multi-insertos (insertar en (...) valores (...), (...), (...), ...
En primer lugar, esta sintaxis solo se admite en mysql y versiones postgresql más nuevas. En segundo lugar, no hay una manera fácil de obtener todos los identificadores generados en dicha multiinserción cuando se utiliza AUTO_INCREMENT o SERIAL y un ORM necesita los identificadores para la gestión de la identidad de los objetos. Por último, el rendimiento de inserción rara vez es el cuello de botella de un ORM. Las inserciones normales son más que suficientemente rápidas para y si realmente desea hacer inserciones rápidas, entonces una inserción múltiple no es la mejor manera, es decir, Postgres COPY o Mysql LOAD DATA INFILE son varios órdenes de magnitud más rápidos .
Estas son las razones por las que no vale la pena el esfuerzo implementar una abstracción que realice insertaciones múltiples en mysql y postgresql en un ORM. Espero que aclare algunas preguntas.
Gracias por su respuesta, pero no estoy seguro de que 'sólo una consulta a la base de datos por call' "flush", porque se puede ver a un tiempo de ejecución de cada instrucción INSERT . Significa que cada instrucción INSERT es una consulta a DB. Actualicé mi pregunta – Mikhail