Schnelleres Einfügen per Skript in Oracle?

Ich arbeite mit einer C # .NET 4.0-Anwendung, die ODP.NET 11.2.0.2.0 mit einer Oracle 11g-Datenbank verwendet. Die Anwendung lädt einige Nachschlagetabellen mit Daten vor, und da die meisten weniger als 20 Datensätze haben, werden die Skripts ziemlich schnell ausgeführt. Eines der Skripte verfügt jedoch über 802 Datensätze und benötigt 248,671 Sekunden, um die Datensätze einzufügen, was für eine so kleine Datenmenge mit einer Datenbank, die schnelle Vorgänge mit großen Datenmengen ankündigt, als übermäßig erscheint.

Ich frage mich also, ob es eine schnellere Möglichkeit gibt, Daten per Skript einzufügen, als die derzeitige Methode, mit der das Skript geschrieben wird.

Die Tabelle, in die eingefügt wird, ist folgendermaßen definiert:

CREATE TABLE FileIds
(
     Id                 NUMERIC(38)                         NOT NULL
    ,Name               NVARCHAR2(50)   DEFAULT 'Unknown'   NOT NULL 
    ,FileTypeGroupId    NUMERIC(38)                         NOT NULL
    ,CONSTRAINT FK_FileIds_FileTypeGroups FOREIGN KEY ( FileTypeGroupId ) REFERENCES FileTypeGroups ( Id )
)

Das einzufügende Skript sieht folgendermaßen aus:

BEGIN
    INSERT ALL
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1152,5)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1197,10)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1200,6)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1143,3)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1189,9)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1109,7)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1166,4)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (0,8)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1149,2)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1400,1)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1330,11)
        INTO FileIds ( Id, FileTypeGroupId ) VALUES (1000,0)
        -- 790 Records removed for example purposes.
        SELECT * FROM DUAL;
    COMMIT;
END;

Die FileTypeGroups-Tabelle, auf die im Fremdschlüssel verwiesen wird, wird vor dem Laden der FileIds-Tabelle vorgeladen. Der FileIds-Tabelle sind keine Sequenzen oder Trigger zugeordnet, und für die Tabelle wurden noch keine Indizes erstellt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage