Oracle Insert All vs Einfügen
In Oracle stieß ich auf zwei Arten von insert-Anweisung
1) Legen Sie Alle: können Mehrere Einträge eingefügt werden mit einer einzigen sql-Anweisung
2) Einfügen : Ein Eintrag wird aktualisiert, pro einfügen.
Nun möchte ich zum einfügen von rund 100.000 Datensätzen. (Tabelle 10 Felder enthält einen Primärschlüssel). Ich bin nicht besorgt über eine Rückkehr Wert.
Ich bin mit oracle 11g.
Können Sie mir bitte helfen mit Respekt zu Leistung was ist besser "Einfügen" oder "Insert All".
Sie sind anders syntax, nicht wirklich in der Leistung.
InformationsquelleAutor Abhishek Sanghvi | 2013-10-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Insert
Anweisung undinsert all
statement sind praktisch die gleichen konventionelleninsert
- Anweisung.insert all
, das wurde eingeführt in 9i version einfach können Sie tun, einfügen in mehrere Tabellen mit einem statement. Eine andere Art von einfügen, die Sie verwenden, um den Prozess zu beschleunigen, ist direct-path insert - verwenden Sie/*+ append*/
oder/*+ append_values*/
(Oracle 11g) Hinweiseoder (ab Oracle 11g)
sagen Oracle, die Sie ausführen möchten direct-path insert. Aber, 100K Zeilen ist es nicht, dass viele Zeilen und konventionellen
insert
Aussage wird genügen. Sie pflegt einen bedeutenden performance-Vorteil mit direct-path insert mit, dass die Menge der Daten. Zudem direct-path insert nicht wiederverwenden freien Raum, es fügt neue Daten nach der HWM(high water mark), daher mehr Platz benötigen. Sie werden nicht in der Lage zu verwendenselect
Erklärung oder andere DML-Anweisung, wenn Sie nicht ausgestelltcommit
.InformationsquelleAutor Nick Krasnov
Ich weiß, das ist eine Art Necro aber ziemlich hoch auf den google-Suchergebnissen, so dass ich denke, dies ist ein Punkt, der lohnt sich.
Legen Sie Alle geben können dramatische performance-Vorteile, wenn Sie eine web-Anwendung, weil es ist eine einzelne SQL-Anweisung, die benötigt nur ein roundtrip zur Datenbank. In den meisten Fällen, obwohl bei weitem nicht alle Fälle. die Mehrheit der Kosten einer Abfrage ist eigentlich die Latenz. Je nachdem, welchen Rahmen Sie verwenden diese syntax kann Ihnen helfen, unnötige round-trips.
Dies scheint unglaublich offensichtlich, aber ich habe gesehen, viele, viele Produktions-web-Anwendungen in großen Unternehmen, die vergessen haben, diese einfache Tatsache.
InformationsquelleAutor jdmneon
Verwenden FORALL würden Sie brauchen, PLSQL-Tabellen.
Dieser Prozess ist ziemlich schnell.
Können Sie auch wählen Sie die Tabelle haben, KEINE LOG-option, das würde den Prozess beschleunigen während der Einsätze.
InformationsquelleAutor Sunil Khatri