Вставка 100 000 строк с операторами SQL - это отлично .Это не большой объем данных, и есть несколько простых приемов, которые помогут вам сократить время выполнения до нескольких секунд.
Сначала убедитесь, что ваш инструмент не отображает что-то для каждого оператора.Копирование и вставка операторов в окно рабочего листа будет ужасно медленным.Но сохранение операторов в сценарии SQL * Plus и запуск этого сценария могут быть быстрыми.Если возможно, используйте настоящий клиент SQL * Plus.Эта программа доступна практически на любой системе и хороша для запуска небольших сценариев.
Если вам нужно использовать SQL Developer, сохраните операторы 100K в текстовом файле, а затем запустите его как скрипт (F5).Этот метод занял 45 секунд на моем ПК.
set feedback off
@C:\temp\test1.sql
Во-вторых, пакетные операторы SQL для устранения накладных расходов.Вам не нужно пакетировать все из них, пакетирования по 100 операторов за раз достаточно, чтобы уменьшить 99% накладных расходов.Например, сгенерируйте одну тысячу операторов следующим образом:
INSERT INTO SELLING_CODE (SELC_ID, VALC_ID, PROD_ID, SELC_CODE, SELC_MASK, VALC_ID_STATUS)
select 5000001, 63, 1, '91111111', 'N/A', 107 from dual union all
select 5000001, 63, 1, '91111111', 'N/A', 107 from dual union all
...
select 5000001, 63, 1, '91111111', 'N/A', 107 from dual;
Сохраните это в текстовом файле, запустите его таким же образом в SQL Developer (F5).Этот метод занял 4 секунды на моем ПК.
set feedback off
@C:\temp\test1.sql
Если вы не можете существенно изменить формат операторов INSERT
, вы можете просто добавить BEGIN
и END; /
между каждыми 100 строками,Это позволит одновременно передавать на сервер 100 операторов и значительно снизить нагрузку на сеть.
Для еще более высоких скоростей запускайте сценарий на обычном SQL * Plus.На моем компьютере загрузка 100 000 строк занимает всего 2 секунды.
Для таких данных среднего размера полезно сохранить удобство операторов SQL.И с помощью нескольких приемов вы можете получить производительность почти такую же, как в двоичном формате.