Назад к вопросам
Middle
10
Что такое BULK COLLECT и FORALL, почему они работают быстрее?
Компании, где спрашивали
МВидео/эльдорадо
Ответ от нейросети
sobes.tech AI
BULK COLLECT и FORALL — это конструкции PL/SQL для эффективной работы с большими объемами данных.
BULK COLLECTпозволяет загружать сразу множество строк из курсора или запроса в коллекцию за одну операцию, уменьшая количество переключений между SQL и PL/SQL.FORALLвыполняет DML-операции (INSERT, UPDATE, DELETE) для всех элементов коллекции за один вызов, вместо цикла с отдельными операциями.
Они работают быстрее, потому что снижают количество контекстных переключений между SQL и PL/SQL, уменьшая накладные расходы на обработку каждой строки по отдельности.
Пример:
DECLARE
TYPE t_ids IS TABLE OF employees.employee_id%TYPE;
l_ids t_ids;
BEGIN
SELECT employee_id BULK COLLECT INTO l_ids FROM employees WHERE department_id = 10;
FORALL i IN l_ids.FIRST .. l_ids.LAST
UPDATE employees SET salary = salary * 1.1 WHERE employee_id = l_ids(i);
END;