В PL / sql хранимая процедура оракула, пытающаяся использовать аналитические функции - PullRequest
0 голосов
/ 15 августа 2010

Лучше ли использовать курсор или аналитические функции в хранимой процедуре для повышения производительности?

Ответы [ 3 ]

3 голосов
/ 15 августа 2010

Лучше использовать чистый SQL поэтапно, чем использовать курсоры для обработки данных RBAR .Это связано с тем, что переключение контекста между механизмами PL / SQL и SQL является чрезмерной нагрузкой.Курсоры и весь их дополнительный код также являются накладными расходами.

Аналитические функции являются отличным расширением SQL, которое позволяет нам выполнять какие-либо действия в операторе SELECT, которые ранее требовали бы процедурного кода.

Конечно, если вы хотите обрабатывать большие суммы, тогда массовый сбор и оператор FORALL , безусловно, являются лучшим подходом.Если вам нужно использовать предложение LIMIT, то явные курсоры неизбежны.

2 голосов
/ 15 августа 2010

Всегда лучше , а не использовать курсоры, если вам не нужно.

0 голосов
/ 29 августа 2010

Использование оператора Pure SQL всегда лучший выбор по сравнению с курсором. Курсоры используются, когда обработка данных с использованием чистого SOL затруднительна.

Используя курсор, мы обрабатываем по одной строке. При массовом сборе мы уменьшаем переключение контекста, но мы по-прежнему обрабатываем только несколько тысяч строк в цикле, используя предложение Limit. Используя чистый SQL, можно вставлять или обновлять больше строк, если доступно достаточно ресурсов. Откат сегмента является ограничивающим фактором. В одном проекте я написал очень сложный чистый SQL для вставки миллионов строк в очень большую среду хранилища данных с ошибкой. Администратор баз данных сделал доступным очень большой сегмент отката. Я не смог добиться такого рода производительности с помощью массовой коллекции.

Пожалуйста, будьте осторожны, большинство компаний не предоставят вам такую ​​услугу. Поэтому, пожалуйста, примите решение на основе доступных ресурсов. Вы можете использовать комбинацию обоих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...