Oracle 11g データベースで ODP.NET 11.2.0.2.0 を使用する C# .NET 4.0 アプリケーションを使用しています。アプリケーションはいくつかのルックアップ テーブルにデータをプリロードします。ほとんどのテーブルは 20 レコード未満であるため、スクリプトは非常に高速に実行されます。ただし、スクリプトの 1 つには 802 のレコードがあり、レコードを挿入するのに 248.671 秒かかります。これは、大量のデータで高速な操作を宣伝するデータベースのような少量のデータには過剰に思えます。
だから私は、スクリプトが書かれている現在の方法よりも、スクリプトを介してデータを挿入するためのより速い方法はあるのでしょうか?
挿入されるテーブルは次のように定義されます。
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 )
)
挿入するスクリプトは次のようになります。
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;
外部キーで参照される FileTypeGroups テーブルは、FileIds テーブルをロードする前に事前にロードされます。FileIds テーブルに関連付けられたシーケンスまたはトリガーはなく、テーブルのインデックスはまだ作成されていません。