Как уже упоминали другие, есть некоторые инструменты, на которые вы должны обратить внимание, если производительность - ваша единственная задача.
Но есть некоторые преимущества использования простых операторов SQL.Во многих организациях есть правила, политики и упорные разработчики, которые блокируют любые новые инструменты.Простой SQL-скрипт - это универсальный язык вашей базы данных, он гарантированно работает где угодно.
Если вы решите использовать операторы SQL, вам следует избегать таких сценариев, как:
insert into my_table values(...);
insert into my_table values(...);
...
И замените его одним оператором, объединяющим несколько строк:
insert into my_table
select ... from dual union all
select ... from dual union all
...
Вторая версия будет работать в несколько раз быстрее.
Однако подобрать правильный размер довольно сложно.Большое количество маленьких вставок будет тратить много времени на связь и другие накладные расходы.Но время разбора Oracle растет в геометрической прогрессии с очень большими размерами.По моему опыту 100 обычно хорошее число.Разбор становится действительно медленным около тысячи.Кроме того, используйте метод union all, избегайте трюка со вставкой из нескольких таблиц.По какой-то причине многостоловая вставка выполняется намного медленнее, а в некоторых версиях Oracle есть ошибки, из-за которых ваш запрос зависает на 501 таблице.
(Вы также можете создать похожий сценарий, используя PL / SQL. A 1Мегабайтная PL / SQL-процедура будет компилироваться гораздо быстрее, чем 1-мегабайтный оператор SQL, но создать сценарий сложно: коллекции, динамический sql, правильная обработка всех типов, создание временного объекта вместо анонимного блока, поскольку большие анонимные блоки вызываютОшибки узла Дианы и т. Д. Я создал процедуру, подобную этой, и она работала хорошо, но, вероятно, это не стоило усилий.)