Zum Inhalt springen

INSERT-Anweisungen

INSERT-Anweisungen sind der Standardweg, Daten in eine relationale Datenbank zu laden. Bei INSERT-Anweisungen werden die Werte zeilenweise übergeben. Das ist einfach, bringt aber erheblichen Overhead beim Parsen und Verarbeiten einzelner INSERT-Anweisungen mit sich. Viele einzelne zeilenweise Inserts sind daher für Masseninserts sehr ineffizient.

Bestpractice Als Faustregel: Vermeiden Sie viele einzelne zeilenweise INSERT-Anweisungen, wenn Sie mehr als ein paar Zeilen einfügen (also keine INSERT-Anweisungen in einer Schleife). Beim Massenladen sollten Sie die Datenmenge pro Anweisung möglichst groß halten.

Wenn Sie Daten dennoch in einer Schleife per INSERT laden müssen, führen Sie die Anweisungen nicht im Auto-Commit-Modus aus. Nach jedem Commit muss die Datenbank die Änderungen auf die Festplatte synchronisieren, damit keine Daten verloren gehen. Im Auto-Commit-Modus wird jede einzelne Anweisung in eine eigene Transaktion gepackt, das heißt fsync wird für jede Anweisung aufgerufen. Das ist beim Massenladen in der Regel unnötig und verlangsamt Ihr Programm deutlich.

Tip Wenn Sie unbedingt INSERT-Anweisungen in einer Schleife zum Laden nutzen müssen, umschließen Sie sie mit BEGIN TRANSACTION und COMMIT.

Syntax

Ein Beispiel für INSERT INTO zum Laden von Daten in eine Tabelle:

CREATE TABLE people (id INTEGER, name VARCHAR);
INSERT INTO people VALUES (1, 'Mark'), (2, 'Hannes');

Eine ausführlichere Beschreibung mit Syntaxdiagramm finden Sie auf der Seite zur INSERT-Anweisung.