Как правило, вы можете избегать очень больших операторов SQL, особенно трюка INSERT ALL FROM DUAL.Я не знаю почему, но я видел несколько случаев, когда Oracle будет очень долго разбирать большие операторы SQL.По какой-то причине «вставка в имя_таблицы (выберите« asdf »из двойного объединения все выберите« asdf из двойного ...) », кажется, работает намного лучше, но через некоторое время все равно начинает замедляться.
Iкогда-то рассчитывались разные размеры похожих запросов, и в какой-то момент время разбора казалось экспоненциально увеличивалосьЭто было на 10.2.0.3.0 я верю.Но сейчас я не могу воспроизвести проблему на 10.2.0.1.0, может быть, это только ошибка для конкретной версии?
Я бы порекомендовал вместо этого использовать версию UNION ALL и уменьшить количествострок, отправленных за утверждение.Другим решением является создание блока PL / SQL для вставки.Похоже, что Oracle разбирает большой PL / SQL лучше, чем большой SQL, но это решение более сложное.
(Кстати, возможно, это просто совпадение, что он быстрее работает в SQL Developer. Поскольку проблема заключается в разборевремя, во второй раз вы всегда будете быстрее.)