Более быстрый способ вставить, через скрипт, в Oracle?
Я работаю с приложением C # .NET 4.0, которое использует ODP.NET 11.2.0.2.0 с базой данных Oracle 11g. Приложение предварительно загружает несколько справочных таблиц с данными, и, поскольку большинство из них содержит менее 20 записей, сценарии выполняются довольно быстро. Однако один из сценариев имеет 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, и пока еще не созданы индексы для таблицы.