Ist es möglich, mehrere Einheiten an die DB mit einer einzigen Abfrage einfügen? Wenn ich ein Beispiel aus here verwende ich mehrere Anfragen im Web-DebuggerDoctrine2 Batch Insert
AKTUALISIERT 23.08.2012
sehen, fand ich die folgenden Links zum Thema. Ich hoffe, dass es jemand helfen wird, eine Batch-Verarbeitung zu verstehen:
- 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
Die wichtigsten Dinge:
Einige Leute scheinen zu fragen, warum Lehre verwendet nicht Multi-Einsätze (Einsatz in (...) Werte (...) (...) (...), ...
Zunächst einmal ist diese Syntax nur auf mysql und neuere postgresql Versionen unterstützt. Zweitens gibt es keine einfache Möglichkeit, halten alle die generierten Identifikatoren in solchen Mehreinsatz zu erhalten, wenn AUTO_INCREMENT oder serial und ein ORM muss die Kennungen für Identität Verwaltung der Objekte. Schließlich ist Einfügeleistung selten der Engpass eines ORM. Normale Einsätze sind mehr als schnell genug für meisten Situationen und wenn Sie wirklich schnell Bulk-Einsätze machen wollen, dann ist ein Multi-Einsatz ist nicht der beste Weg, wie auch immer, das heißt Postgres COPY oder Mysql LOAD DATA INFILE sind um mehrere Größenordnungen schneller .
Dies sind die Gründe, warum es nicht der Mühe wert ist, eine Abstraktion zu implementieren, die ein ORM in Multi-Einsätze auf MySQL und PostgreSQL führt. Ich hoffe, dass das einige Fragezeichen aufräumt.
Vielen Dank für Ihre Antwort, aber ich bin nicht sicher, dass 'nur eine Abfrage an die Datenbank per„flush“call', weil ich eine Zeit der Ausführung für jede INSERT-Anweisung sehen . Dies bedeutet, dass jede INSERT-Anweisung eine Abfrage an die DB ist. Ich habe meine Frage aktualisiert – Mikhail